You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Tkinter窗口显示2秒后自动关闭?

解决Tkinter窗口显示2秒后自动关闭的问题

直接在win.mainloop()前使用time.sleep(2)会阻塞Tkinter的事件循环,导致窗口无法立即渲染。正确的做法是利用Tkinter内置的after()方法,它能在窗口正常显示后,延迟指定时间执行关闭逻辑,完全不会影响窗口的即时展示。

修改后的完整代码如下:

from tkinter import Tk, Toplevel, Label, PhotoImage
from random import randint

# 假设rand是已定义的随机字符串,用于选取目标图片
rand = "target_image_suffix"

def close_windows():
    # 先关闭可见的Toplevel弹窗
    window.destroy()
    # 销毁主窗口,终止事件循环
    win.destroy()

global win
win = Tk()

win.attributes('-alpha', 0.0)
win.iconify()

window = Toplevel(win)
window.geometry(f"300x300+{randint(0, 1400)}+{randint(0, 700)}")
window.overrideredirect(1)

photo = PhotoImage(file=f"classes/bin/starters/spaceStorage/popUps/{rand}.png")

label = Label(window, image=photo)
label.pack()

# 调度2000毫秒(即2秒)后执行关闭逻辑
window.after(2000, close_windows)

win.mainloop()

核心要点说明:

  • after(2000, close_windows):向Tkinter事件循环注册延迟任务,2秒后自动调用关闭函数,该操作不会阻塞窗口的初始化与渲染。
  • close_windows函数:先关闭可见的弹窗窗口,再销毁主窗口,确保程序能正常退出,避免事件循环无意义持续运行。
  • 使用f-string替代字符串拼接,让代码更简洁易读。

内容的提问来源于stack exchange,提问作者Knifick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 10:16:10