如何使用任何Python GUI框架在我的应用程序中嵌入一些应用程序窗口

如何使用任何Python GUI框架在我的应用程序中嵌入一些应用程序窗口,python,user-interface,Python,User Interface,我希望一些应用程序看起来像Python应用程序中的小部件 就这些。我不需要他们之间的任何互动。我对适用于windows和x windows的任何GUI工具包中的解决方案感兴趣 如果有一个Tkinter解决方案就好了,但这并不重要。在X windows(即Linux、FreeBSD、Solaris)上使用GTK,您可以使用XEMBED协议嵌入小部件。不幸的是,您正在启动的应用程序必须明确支持它,以便您可以告诉它嵌入自身。某些应用程序不支持此功能。值得注意的是,我找不到一种使用Firefox的方法

我希望一些应用程序看起来像Python应用程序中的小部件

就这些。我不需要他们之间的任何互动。我对适用于windows和x windows的任何GUI工具包中的解决方案感兴趣

如果有一个Tkinter解决方案就好了,但这并不重要。

在X windows(即Linux、FreeBSD、Solaris)上使用GTK,您可以使用XEMBED协议嵌入小部件。不幸的是,您正在启动的应用程序必须明确支持它,以便您可以告诉它嵌入自身。某些应用程序不支持此功能。值得注意的是,我找不到一种使用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工作,除了上面的注释外,还需要添加

XTerm*allowSendEvents: True 

~/.Xresources
。(也许可以用
xrdb-load~/.Xresources
重新加载它们)

我认为它高度依赖于平台。请提供更多详细信息。您知道嵌入式xterm为什么不接收键盘事件吗?@MeanEYE,可能是焦点问题?@Hibou57哦,我很久以前就解决了这个问题。:)谢谢你的努力。我所做的是
object.child\u focus(gtk.DIR\u TAB\u FORWARD)
object
作为套接字。