如何使用Tkinter创建软件加载窗口,7秒后自动打开home.py主程序
Tkinter 7秒自动跳转加载窗口实现方案
核心注意点
- 不要直接使用
time.sleep()实现延时,该方法会阻塞Tkinter的主事件循环,导致加载窗口全程卡死无响应 - 用Tkinter内置的
after()方法实现异步延时调度,不会阻塞窗口正常渲染 - 跳转运行
home.py可通过subprocess模块调用Python解释器执行外部脚本实现
完整修正代码
from tkinter import * import subprocess import os root = Tk() root.title("load") root.geometry("300x300") # 固定加载窗口大小不可调整,符合常规软件加载页设计 root.resizable(False, False) lbl = Label(root, text="EXAMPLE", font=("Calibri 15 bold")) # 原代码此处语法错误,放置组件需调用place/grid/pack方法,此处用place匹配你设定的坐标 lbl.place(x=40, y=40) def wait_and_go(): # 先销毁当前加载窗口 root.destroy() # 调用同目录下的home.py主程序 if os.path.exists("home.py"): subprocess.Popen(["python", "home.py"]) else: print("错误:未找到主程序文件home.py") # 注册延时任务:7000毫秒=7秒后执行跳转逻辑 root.after(7000, wait_and_go) # 启动加载窗口的主事件循环 root.mainloop()
代码说明
after(7000, wait_and_go)第一个参数为延时毫秒数,第二个为延时结束后执行的函数,全程不会阻塞窗口正常显示- 用
subprocess.Popen运行外部脚本,不会和当前进程绑定,加载窗口销毁后主程序可独立正常运行 - 增加了
home.py存在性判断,避免运行时报错无提示 - 如果你的系统默认Python命令为
python3,将subprocess.Popen参数里的"python"替换为"python3"即可正常运行
内容的提问来源于stack exchange,提问作者user17503353
相关产品推荐
相关产品推荐

