Python Tkinter多线程 - 当用户关闭GUI时如何结束/杀死/停止线程

12 浏览
0 Comments

Python Tkinter多线程 - 当用户关闭GUI时如何结束/杀死/停止线程

如果我有一个非for循环的线程任务与tkinter一起运行,例如time.sleep(seconds),在任务结束之前或time.sleep()结束之前,如何安全地结束任务。

如果你运行程序,点击按钮然后关闭GUI窗口,那么finished会在几秒钟后在解释器窗口中打印出来。

请注意,在这种情况下,time.sleep()只是一个长时间运行的非for循环函数的占位符。

我在这里创建了一个USER_HAS_CLOSED_WINDOW函数来捕捉用户关闭窗口的事件,我打算在这里添加一些代码来结束正在运行的线程,但是我不确定如何实现。

我猜另一种选择是在线程上设置适当的timeout并使用.join()。但我也不确定如何做到这一点。

0
0 Comments

问题出现的原因是当用户关闭GUI时,无法有效地结束/终止/停止线程。解决方法是使用Event对象,并在使用要中断的线程时使用wait()方法,而不是使用time.sleep。以下是可能有所帮助的链接:

1. https://stackoverflow.com/a/5205180

2. https://stackoverflow.com/a/38828735

0