我希望某些应用程序看起来像我的Python应用程序中的小部件。
这就是全部。我不需要他们之间的任何互动。我对用于windows和x windows的任何 GUI工具包中的解决方案感兴趣。
与Tkinter建立解决方案会很好,但这并不重要。
答案 0 :(得分:5)
在X windows(即Linux,FreeBSD,Solaris)上使用GTK,您可以使用XEMBED协议使用gtk.Socket
嵌入小部件。不幸的是,您启动的应用程序必须明确支持它,以便您可以告诉它嵌入自己。有些应用程序不支持此功能。值得注意的是,我找不到使用Firefox的方法。
尽管如此,这是一个示例程序,它将在GTK窗口中运行X终端或Emacs会话:
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()
答案 1 :(得分:0)
没有足够的声誉来评论字形的答案。要使xterm工作,除了上面的注释之外,还需要添加
XTerm*allowSendEvents: True
到~/.Xresources
。 (也许可以用xrdb -load ~/.Xresources
)重新加载那些