我为我的汽车构建了一个类似于特斯拉Model S的触摸界面,我想本地支持Spotify。我使用tkinter在Python中构建我的GUI,并且我想知道是否有一种方法可以在GUI的预定义帧内的GUI内启动linux程序(在本例中为Spotify)。我想我在网页中就像是一个iframe。
我知道这可能不是最好的方法,但我的汽车将在99%的时间内离线,所以我需要支持离线流媒体,我可以从Spotify应用程序中做到这一点而不是很多人使用他们的网络API。
答案 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);
}