Utilizzando GTK su X Windows (ad esempio Linux, FreeBSD, Solaris), è possibile utilizzare il protocollo XEMBED per incorporare i widget utilizzando gtk.Socket
. Sfortunatamente, l'applicazione che stai lanciando deve supportarla esplicitamente in modo che tu possa dirla per incorporarla. Alcune applicazioni non supportano questo. In particolare, non riesco a trovare un modo per farlo con Firefox.
Tuttavia, ecco un esempio di programma che verrà eseguito sia un terminale X o di una sessione di Emacs all'interno di una finestra GTK:
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()
Penso che sia altamente dipendente dalla piattaforma. Si prega di dare maggiori dettagli. – yairchu