如何在GUI中嵌入外部窗口(Python + Glade + Gtk3)

时间:2016-08-14 18:42:58

标签: python gtk gtk3 glade

我开始使用Glade,python和Gtk3库构建GUI。 我想尝试查看在GUI中的容器内链接它的外部窗口。可能吗?哪个是最好的容器对象呢?

我开始搜索,但Gtk2中的简单方法(如here)无法在Gtk3中再次使用。

我发现了一个非常有趣的帖子here,它允许我设置目标窗口的正确ID,但我仍然对如何在我的GUI中显示它感到困惑。

我没有尝试用cairo改变位these tutorials

到目前为止我的代码片段(我想在map_area容器中显示ID = 0x360000b的窗口,我必须使用" self。"处理结构)。暂时map_area容器是Drawingarea。

# if condition occurs    
    Gdk.Window.process_all_updates()
    win_id = 0x360000b # from xwininfo command
    root_win = GdkX11.X11Display.get_default()
    win = GdkX11.X11Window.foreign_new_for_display(root_win, win_id)
    width = win.get_width()
    height = win.get_height()   
    self.map_area = cairo.ImageSurface(cairo.FORMAT_ARGB32, width, height)               
    pixbuf = Gdk.pixbuf_get_from_window(win, 0, 0, width, height)
    cr = cairo.Context(self.map_area)   
    Gdk.cairo_set_source_pixbuf(cr, pixbuf, 0, 0)
    cr.paint()

任何人都可以帮助我吗? 提前谢谢!

1 个答案:

答案 0 :(得分:1)

听起来你想成为一名窗口管理员。看看有关如何编写窗口管理器的问题的答案,例如:

Creating a window manager for Linux

或者这个:

Building a Window Manager

祝你好运!