[英]How to embed some application window in my application using any Python GUI framework
我希望某些应用程序看起来像我的 Python 应用程序中的小部件。
就这样。 我不需要他们之间的任何互动。 我对 windows 和 x windows 的任何GUI 工具包中的解决方案感兴趣。
如果有 Tkinter 的解决方案就好了,但这并不重要。
在 X windows(即 Linux、FreeBSD、Solaris)上使用 GTK,您可以使用 XEMBED 协议使用gtk.Socket
嵌入小部件。 不幸的是,您要启动的应用程序必须明确支持它,以便您可以告诉它嵌入自己。 某些应用程序不支持此功能。 值得注意的是,我找不到使用 Firefox 的方法。
N.netheless,这里有一个示例程序,它将运行 X 终端或 Emacs session 在 GTK window 中:
import os
import gtk
from gtk import Socket, Button, Window, VBox, HBox
w = Window()
e = Button("Emacs")
x = Button("XTerm")
s = Socket()
v = VBox()
h = HBox()
w.add(v)
v.add(s)
h.add(e)
h.add(x)
v.pack_start(h, expand=False)
def runemacs(btn):
x.set_sensitive(False); e.set_sensitive(False)
os.spawnlp(os.P_NOWAIT, "emacs",
"emacs", "--parent-id", str(s.get_id()))
def runxterm(btn):
x.set_sensitive(False); e.set_sensitive(False)
os.spawnlp(os.P_NOWAIT, "xterm",
"xterm", "-into", str(s.get_id()))
e.connect('clicked', runemacs)
x.connect('clicked', runxterm)
w.show_all()
gtk.main()
没有足够的声誉来评论 Glyphs 的答案。 要使 xterm 工作,除了上面的注释外,还需要添加
XTerm*allowSendEvents: True
到~/.Xresources
。 (也许重新加载那些,用xrdb -load ~/.Xresources
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.