在Python GUI中嵌入Linux程序?

时间:2017-04-13 20:36:33

标签: python python-2.7 python-3.x tkinter

我为我的汽车构建了一个类似于特斯拉Model S的触摸界面,我想本地支持Spotify。我使用tkinter在Python中构建我的GUI,并且我想知道是否有一种方法可以在GUI的预定义帧内的GUI内启动linux程序(在本例中为Spotify)。我想我在网页中就像是一个iframe。

我知道这可能不是最好的方法,但我的汽车将在99%的时间内离线,所以我需要支持离线流媒体,我可以从Spotify应用程序中做到这一点而不是很多人使用他们的网络API。

1 个答案:

答案 0 :(得分:4)

Tkinter能够嵌入其他基于X11的应用程序,但前提是Windows支持嵌入自身。

诀窍是获取tkinter小部件的X窗口id,然后让其他程序写入该窗口id。

据我所知,只有少数计划可以实现这一目标。 xterm是一个。我想我过去也使用过mplayer。

这是使用xterm的一个非常简单的例子:

struct sample
{
   void func1(int data)
   {
      std::cout << "Func 1 , data = " << data << std::endl;
   }
   void func2(int data)
   {
      std::cout << "Func 2 , data = " << data << std::endl;
   }
};


void invoker(std::function<void(int)> call, int param)
{
   static int _param;

   if (param) _param = param;

   call(_param);
}

int main()
{

   sample s;

   using namespace std::placeholders;
   invoker(std::bind(&sample::func1, &s, _1),1);
   invoker(std::bind(&sample::func2, &s, _1),0);

}