如何在 pygtk 中异步运行 gtk.main() ?
到目前为止我拥有的基本代码如下。如何线程化 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)
The basic code that I have so far is below. How do I thread gtk.main() so that the code after Display is initialized runs asynchronously?
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)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
只需将 gtk.main 调用放在其他所有内容之后即可。
如果您需要将控制器放在单独的线程中,请确保通过执行 gobject.idle_add(widget.method) 来执行所有 gtk 相关函数/方法。
Just put the
gtk.main
call after everything else.If you need to have the controller in a separate thread, make sure you do all gtk related function/methods by doing gobject.idle_add(widget.method).
您可以将 Twisted 与 gtk2reactor 一起使用。
http://twistedmatrix.com/documents/current/core/howto/选择-reactor.html
You could use Twisted with the gtk2reactor.
http://twistedmatrix.com/documents/current/core/howto/choosing-reactor.html