c++ - 使用带有 C++ 后端的 Python GTK GUI 前端

标签 c++ python gtk x11 libvlc

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

最佳答案

如果你有一个绘图区,你可以这样做:

#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 的内部结构,所以这取决于你:)

关于c++ - 使用带有 C++ 后端的 Python GTK GUI 前端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11314599/

相关文章:

c++ - 每次创建新对象时都会迭代类中的变量

python - --thunder-lock 什么时候有用?

css - 在 gtkmm 3.10.1 中使用 CSS 设计 Gtk::Box 的问题

python - 如何设置 Gtk.FileChooserWidget 的默认打开路径?

c - DBus Glib 发送信号 - 没有发出信号

C++ 和 Enum 以及类成员

假设 C++ 显式类型缺失 ('int')

c++ - 如何在 Visual Studio 2010 for Linux 中编译

python - 如何在 Windows 机器上删除文本文件中的空行

python - 索引两次后如何更新 Pytorch 中的张量?