我到目前为止的基本代码如下。如何线程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)
答案 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)
你可以使用带有gtk2reactor的Twisted。
http://twistedmatrix.com/documents/current/core/howto/choosing-reactor.html