4

我有一些 C++ 代码,现在正在为应用程序构建 GUI。过去,我使用 python 和 pygtk 进行 GUI 编程,偶尔会链接到一些 C++ 代码来完成一些繁重的工作。我想继续这一趋势,但有一个关于在这种情况下如何做到这一点的问题。部分 C++ 代码从相机获取图像,我想在 GUI 上显示这些图像。我过去使用过 libvlc,可以将 xid 从 DrawingArea 传递给 vlc 以在其上绘制视频。我想做同样的事情,但似乎无法弄清楚如何使用 xid。我已经稍微研究了 vlc 代码,但还没有弄明白。如何将 python 中 gtk 小部件的 xid 传递给 C++ 并让 C++ 代码在 gtk 小部件上绘制图像?

4

1 回答 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 传递给你想要的任何东西。

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

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

于 2013-02-14T15:07:21.967 回答