我有一些C ++代码,现在正在为应用程序构建GUI。在过去,我使用python和pygtk进行GUI编程,并偶尔链接到一些C ++代码来做一些繁重的工作。我想继续这种趋势,但在这种情况下有一个问题如何做到这一点。部分C ++代码从摄像头获取图像,我想在GUI上显示这些图像。我过去使用过libvlc,可以将xid从DrawingArea传递到vlc来绘制视频。我想做同样的事情,但似乎无法弄清楚如何使用xid。我已经调查了一下vlc代码,但还没有意识到它。如何将python中的gtk小部件的xid传递给C ++并让C ++代码在gtk小部件上绘制图像?
答案 0 :(得分: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传递给你想要的任何东西。
请注意,窗口小部件只有在实现时才会创建窗口。因此,在绘制区域的“实现”信号发出之前,请不要执行上述操作。
您需要将Python代码中的绘图区域用于C ++代码。我不太了解pygtk的内部结构,所以这取决于你:)