使用Python GTK GUI前端与C++后端

4

我有一些C++代码,现在正在为应用程序构建GUI。过去我使用Python和pygtk进行GUI编程,并偶尔链接到一些C++代码来处理一些复杂的任务。我希望继续这个趋势,但是在这种情况下有一个问题需要解决。C++代码的一部分从相机获取图像,我想在GUI上显示这些图像。过去我使用了libvlc,并可以将DrawingArea的xid传递给vlc来绘制视频。我想做同样的事情,但似乎无法弄清如何使用xid。我已经稍微研究了一下vlc代码,但还没有理解。我该如何将Python中GTK小部件的xid传递给C++,并使C++代码在GTK小部件上绘制图像?


我刚刚将X11(我假设您正在使用)添加到标签中,使用窗口的XID显示内容是一个X11问题。关于这一点,我建议您查看Xlib和XCB,但两者都相当低级,因此使用工具包来完成相同的操作可能是一个更好的选择。 - Ulrich Eckhardt
1个回答

0
如果您有一个绘图区域,您可以这样做:
#include <gdk/gdkx.h>

GtkWidget *drawing_area;
GdkWindow *window;
Window xid;

if (gtk_widget_get_realized (drawing_area)) {
    window = gtk_widget_get_window (drawing_area);
    xid = gdk_x11_window_get_xid (window);
}

然后你可以将xid传递给任何你想要的地方。

请注意,小部件只有在实现时才会创建它们的窗口。因此,在绘图区域的“realize”信号发出之前不要执行上述操作。

您需要使Python代码中的绘图区域可供C++代码使用。我不太了解pygtk的内部情况,所以这取决于您 :)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接