将Python GTK GUI前端与后端一起使用C++后端

Using Python GTK GUI front end with C++ backend

本文关键字:后端 一起 C++ Python GTK GUI 前端      更新时间:2023-10-16

我有一些C++代码,现在正在为应用程序构建GUI。过去,我使用 python 和 pygtk 进行 GUI 编程,偶尔会链接到一些C++代码来完成一些繁重的工作。我想继续这种趋势,但有一个关于在这种情况下如何做到这一点的问题。C++代码的一部分从相机获取图像,我想在 GUI 上显示这些图像。我过去使用过libvlc,可以将xid从绘图区域传递到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 的内部结构,所以这取决于你:)