0

嘿,我正在編寫一個接口,與詹金斯一起工作來觸發構建作業和部署。我一直堅持的一個特點是能夠在完成構建後獲得構建狀態。線程暫停執行Tkinter程序

截至目前,我有一個與Tkinter實現的GUI和應用程序是完全正常運行,除了在最終的構建狀態丟失的信息。

我試圖查詢jenkins的信息,但我需要給它時間來完成輪詢之前的構建。我以爲我可以通過一個簡單的線程來完成這個任務,並且只是讓它在後臺運行,但是,當線程運行並且它觸發time.sleep()函數時,它會暫停程序的其餘部分。

這樣做可以不停止程序的其餘部分,即GUI,如果是這樣,我會在哪裏出錯?

這裏的問題區域的SNIPPIT:

def checkBuildStatus(self): 
    monitor_thread = threading.Thread(target=self._pollBuild()) 
    monitor_thread.daemon = True 
    monitor_thread.start() 

def _pollBuild(self): 
    # now sleep until the build is done 
    time.sleep(15) 

    # get the build info for the last job 
    build_info = self.server.get_build_info(self.current_job, self.next_build_number) 
    result = build_info['result'] 

回答

3

當你創建一個線程,你需要傳遞函數本身。確保不要調用該函數。

monitor_thread = threading.Thread(target=self._pollBuild()) 
#              ^^ 

應該是:

monitor_thread = threading.Thread(target=self._pollBuild) 
+0

工作就像一個魅力,是有道理的我在呼喚它在主線程沒有意識到這一點。謝謝! –