2012-01-02 56 views
1

我想用一個gui編寫一個python應用程序,而且我遇到了python的線程包問題。Python線程,新線程卡住

import pygtk 
pygtk.require('2.0') 
import gtk 
import threading 
import time 

class gui: 
    def main(self): 
     print "starting gui" 
     gtk.main() 

class logic: 
    def __call__(self): 
     time.sleep(1) 
     print "did logic" 

if __name__ == "__main__": 
    threading.Thread(None, logic()).start() 
    gui().main() 

輸出:

starting gui 

邏輯從未發生過。爲什麼?我怎樣才能解決這個問題?

回答

4

我處理了這個問題,最長的時候,這裏就是你會找到一個解決方案:

http://faq.pygtk.org/index.py?req=show&file=faq20.006.htp

+0

哇,這是非常複雜的。任何人都可以推薦另一個允許我使用另一個線程而不重新編譯它的GUI庫嗎? – Kevin 2012-01-02 07:01:22

+0

您不必重新編譯GTK以使用線程。我所知道的所有發行版都有GTK編譯的線程支持,包括Windows上的GTK安裝程序。如果你只從主線程訪問GUI(例如通過發送消息到線程,使用idle_add等),你甚至不需要'threads_enter' /'threads_leave'。 – jdm 2012-01-02 10:48:09