[Python]tkinter窗口定时销毁实现
问
tkinter窗口,目标是打开一段时间后关闭。threading.Timer满足需求,但用.destroy()后发现timer的线程并没有关闭,貌似因为这个销毁阻塞了。
解
假设根控件名称为root,则不应该直接使用root.destroy()来关闭窗口,root.quit()才能ok,但是就这样在定时器中调用也会存在调用了quit()后窗口的关闭有延时,甚至有些玄学的关不了。阴差阳错,再在后面加了root.update(),完美解决。
""" 注:纯手码,意思到位了就行 """
def main()
root = tk.Tk()#初始化根
#加入一些控件,如Lable、Text、Button等
threading.Timer(3, target=timeToClose, args=(root,)).start()#定时关闭,3s后
root.mainloop()#相当于一个 while(True)
root.destroy()#调用了 quit() 后会继续往后,这里销毁才没问题
def timeToClose(root)#定时器执行的方法
root.quit()
root.update()
if(__name__ = "__main__")
main()

浙公网安备 33010602011771号