线程停止执行Tkinter程序

时间:2016-05-12 20:30:37

标签: python-2.7 tkinter background-process python-multithreading

嘿所有我正在编写一个与jenkins一起工作的界面来触发构建作业和部署。我一直坚持的一个功能就是能够在构建完成后获得构建的状态。

截至目前,我已经使用Tkinter实现了一个GUI,除了最终构建状态的缺失信息之外,应用程序完全正常运行。

我试图用jenkins来查询信息,但我需要花时间在轮询之前完成构建。我想我可以通过一个简单的线程实现这一点,并让它在后台运行,但是,当线程运行并且它命中time.sleep()函数时,它也会暂停程序的其余部分。

这是否可以在不停止程序的其余部分(即GUI)的情况下执行,如果是,我哪里出错?

这是问题领域的一个问题:

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']

1 个答案:

答案 0 :(得分:3)

创建线程时,需要传递函数本身。确保不要调用该函数。

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

应该是:

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