我希望某些應用程序看起來像我的Python應用程序中的小部件。如何在我的應用程序中使用任何Python GUI框架嵌入一些應用程序窗口
就是這樣。我不需要他們之間的任何交互。我對的任何 GUI工具包均適用於windows和x windows。
這將是很好的與Tkinter的解決方案,但它並不重要。
我希望某些應用程序看起來像我的Python應用程序中的小部件。如何在我的應用程序中使用任何Python GUI框架嵌入一些應用程序窗口
就是這樣。我不需要他們之間的任何交互。我對的任何 GUI工具包均適用於windows和x windows。
這將是很好的與Tkinter的解決方案,但它並不重要。
在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()
你碰巧知道爲什麼嵌入xterm不會收到鍵盤事件? – MeanEYE 2012-02-18 01:24:52
沒有足夠的信譽評論字形回答。爲了使xterm的工作,除了上面的評論一個人需要還可以添加
XTerm*allowSendEvents: True
到~/.Xresources
。 (也許重新加載這些,與xrdb -load ~/.Xresources
)
我認爲這是高度依賴於平臺。請提供更多細節。 – yairchu 2009-06-17 23:07:11