2009-06-17 61 views

回答

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() 
+0

你碰巧知道爲什麼嵌入xterm不會收到鍵盤事件? – MeanEYE 2012-02-18 01:24:52

0

沒有足夠的信譽評論字形回答。爲了使xterm的工作,除了上面的評論一個人需要還可以添加

XTerm*allowSendEvents: True 

~/.Xresources。 (也許重新加載這些,與xrdb -load ~/.Xresources

相關問題