[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()
posted @ 2021-02-24 11:52  Lma  阅读(762)  评论(0)    收藏  举报