0

私がこれまでに持っている基本的なコードは以下のとおりです。Display が初期化された後のコードが非同期で実行されるように gtk.main() をスレッド化するにはどうすればよいですか?

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

2 に答える 2

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()
于 2009-09-08T15:50:59.913 に答える
0

gtk2reactor で Twisted を使用できます。

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

于 2010-08-04T12:12:23.543 に答える