繁体   English   中英

如何在pygtk中异步运行gtk.main()?

[英]How can I run gtk.main() asynchronsly in pygtk?

到目前为止,我的基本代码如下。 如何对gtk.main()进行线程处理,以使Display初始化后的代码异步运行?

import pygtk
pygtk.require("2.0")
import gtk

class Display():

    def __init__(self):
        self.fail = "This will fail to display"
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.connect("destroy", lambda w: gtk.main_quit())
        window.show()
        self.main()            

    def main(self):
        gtk.main()

class Test():

    def __init__(self, display):
        print display.fail

d = Display()
t = Test(d)

只需将gtk.main调用放在所有其他内容之后即可。 如果需要将控制器放在单独的线程中,请确保通过执行gobject.idle_add( widget.method )来执行所有与gtk相关的功能/方法。

import pygtk
pygtk.require("2.0")
import gtk

class Display(object):

    def __init__(self):
        self.fail = "This will fail to display"
        window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        window.connect("destroy", lambda w: gtk.main_quit())
        window.show()            


class Test(object):

    def __init__(self, display):
        print display.fail

d = Display()
t = Test(d)

gtk.main()

您可以将Twisted与gtk2reactor一起使用。

http://twistedmatrix.com/documents/current/core/howto/choosing-reactor.html

暂无
暂无

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

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