2010-01-07 62 views
8

我设计方法 - 一个PyGTK的GUI和希望嵌入外部应用到它中嵌入外部应用程序。pygtk的如何我PyGTK的GUI

没有人有任何想法如何可以做到这一点?

+0

不太清楚'嵌入'是什么意思?你能更具体地了解你的情况吗? – zdav 2010-01-07 21:40:32

+0

“嵌入”是什么意思。 更具体一些,并举例说明。 – 2010-01-07 21:41:13

+1

我以前在Gambas2做过这个。它应该是这样的 http://upload.snelhest.org/images/0812134.png 你可以在截图中看到的GParted如何嵌入到我的应用程序。 通过“嵌入”我的意思是启动一个外部应用程序...但不是具有窗口管理器装饰它,将它放在桌面上,它需要去直接进入我的应用程序。 认为它像做了重新设置父级,但在窗口不是一个小部件 – 2010-01-07 22:11:22

回答

4

这取决于您试图嵌入到您的应用程序,但如果其他应用程序是GTK应用程序(或支持XEMBED协议的应用程序),则应该可以使用gtk.Pluggtk.Socket执行此操作。该PyGTK的教程有一节解释如何做到这一点:

http://www.pygtk.org/pygtk2tutorial/sec-PlugsAndSockets.html

+0

我没看,但我只是不看看如何能帮助我嵌入外部应用程序。 通过xwinfo报告的窗口ID是一样的东西0x12343但插头要以长格式的窗口ID ...我不知道如何这两个拼起来 – 2010-01-08 15:16:31

+0

@ M0E-LNX:十六进制和长期之间的转换:'长(“0x12343”,16)'... – Sardathrion 2012-06-29 14:24:30

1

您不需要使用外部程序来获取gtk.Plug/gtk.Socket ID,它们具有相应的功能。请参阅本教程中的示例:link

0

如果你想重新设置父级的外窗(这可能不是一个GTK窗口),您可以使用

w = gdk.window_foreign_new(window_id) 

摆脱操作系统窗口句柄GDK窗口对象,然后用

w.reparent(parent_window, x, y) 

将其重新映射到现有的gtk容器中。