繁体   English   中英

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

[英]How to embed some application window in my application using any Python GUI framework

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

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

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

在 X windows(即 Linux、FreeBSD、Solaris)上使用 GTK,您可以使用 XEMBED 协议使用gtk.Socket嵌入小部件。 不幸的是,您要启动的应用程序必须明确支持它,以便您可以告诉它嵌入自己。 某些应用程序不支持此功能。 值得注意的是,我找不到使用 Firefox 的方法。

N.netheless,这里有一个示例程序,它将运行 X 终端或 Emacs session 在 GTK window 中:

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

没有足够的声誉来评论 Glyphs 的答案。 要使 xterm 工作,除了上面的注释外,还需要添加

XTerm*allowSendEvents: True 

~/.Xresources (也许重新加载那些,用xrdb -load ~/.Xresources

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM