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

时间:2009-09-08 02:33:36

标签: python multithreading 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)

2 个答案:

答案 0 :(得分:0)

只需将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()

答案 1 :(得分:0)