2009-09-08 61 views
0

我到目前爲止的基本代碼如下。我如何線程gtk.main(),以便顯示初始化後的代碼異步運行?如何在pygtk中異步運行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) 
+0

你想達到什麼目的?什麼是你正在解決的真正問題? – 2009-09-08 04:50:10

+0

我試圖控制一個gtk窗口和其他類的各種元素。 – aberkowitz 2009-09-08 05:16:03

+0

你的程序應該只有一個主循環。也許它不應該由Display類來控制。 – u0b34a0f6ae 2009-09-08 12:45:25

回答

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