我的 tkinter 应用程序窗口无法正确关闭。我正在使用 python 3.6.6 和 tkinter 8.6
我的代码基本上是这样做的:
打开一个流程,其中:
- 测试函数通过线程调用,该线程在 3 秒后关闭 Gui 窗口
- 创建 Gui 窗口
- 等待线程完成(加入(并猜测窗口已关闭
我尝试使用:
- 退出 ->窗口仅在我将鼠标悬停在窗口上时才关闭
- 销毁 ->销毁不返回
我把它简化为下面的代码,请复制并执行和/或告诉我出了什么问题......
from time import sleep, time
import threading
from multiprocessing import Process, set_start_method
from tkinter import *
CtrlApplObj = None
def Start():
global CtrlApplObj
CtrlApplObj = None
CtrlApplObj = ControlApplication()
CtrlApplObj.run()
def End():
print("Quit now...")
#CtrlApplObj.root.destroy()
CtrlApplObj.root.quit()
class ControlApplication():
def __init__(self):
pass
def run(self):
self.root=Tk()
print("Mainloop...")
self.root.mainloop()
def test():
sleep(3)
End()
def execute():
T1 = threading.Thread(target=test)
T1.start()
Start()
T1.join()
if __name__ == "__main__":
set_start_method("spawn")
for i in range(2):
TestProcess = Process(target=execute)
TestProcess.start()
TestProcess.join()
我的最终解决方案是在测试线程中不使用任何 tkinter 操作。然后销毁工作。
我的测试过程没有关闭,我遇到了另一个问题。这是因为队列不是空的。这个过程要结束了。