簡體   English   中英

在Pygtk中使用線程

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM