[英]Use Thread in Pygtk
我正在開發一個類似於netmeeting的聊天應用程序的項目。 我想分開一個線程用於GUI(gtk.main),另一個線程同時接受客戶端聊天請求(socket.accept)。 但有個問題..
這是我的簡單代碼行,它是用於接受客戶端請求的第二個線程:
while True:
self.new_sock,self.client_addr = self.sock.accept()
#CloseDialog is a messege box
respons=self.CloseDialog.run()
if respons==gtk.RESPONSE_YES:
#Call a Chat Window
elif respons==gtk.RESPONSE_NO:
#Close the requested socket
當我運行應用程序時,它切換到gtk.main循環,而我的第二個線程無法運行。 是否有任何進程可以並行運行那些線程,但是我對此感到非常困惑。 如果您需要任何進一步的信息,我會給您。 請幫助我..在此先感謝
看看PyGTK常見問題解答 。 特別是,我建議使用gobject.idle_add()
方法。 當您的第二個線程需要任何GUI交互時,可以使用gobject.idle_add()安排一些在主線程中運行的代碼,如下所示:
def ask_close ():
self.CloseDialog.run ()
gobject.idle_add (ask_close)
然后,您需要等待一些互斥鎖X
以便答案(在主線程中)到達時。 我還建議不要使用模式對話框( run()
),因為這在很大程度上違反了具有多個線程的目的。 而是使用present()
並將回調連接到response
信號。 此回調將釋放互斥鎖X
以便第二個線程可以停止等待並處理答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.