如何使用Python的Tkinter实现约每50秒弹出提示消息?
解决Tkinter定时重复弹窗的问题
你的代码存在几个关键问题:
root.mainloop()会持续阻塞程序执行,后续的time.sleep(50)永远无法运行- 用
while True搭配time.sleep会破坏Tkinter的事件循环机制,导致程序卡死 - 每次调用
virus()都新建Tk()实例,属于不必要的资源浪费
正确的做法是使用Tkinter内置的after()方法实现定时任务,它不会阻塞事件循环,是Tkinter官方推荐的定时方案。修改后的代码如下:
from tkinter import Tk, messagebox def show_error(): # 弹出提示窗口 messagebox.showinfo("error", "error") # 50000毫秒(50秒)后再次调用自身,实现循环弹窗 root.after(50000, show_error) if __name__ == "__main__": root = Tk() # 隐藏主窗口,只保留提示弹窗 root.withdraw() # 首次触发弹窗 show_error() # 启动Tkinter事件循环 root.mainloop()
代码说明:
root.withdraw()用于隐藏默认的空白主窗口,避免多余界面干扰after(50000, show_error)实现定时触发,每50秒调用一次弹窗函数- 整个逻辑基于Tkinter事件循环运行,不会出现阻塞或卡死问题
内容的提问来源于stack exchange,提问作者klamerusjc
相关产品推荐
相关产品推荐

