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

如何同时运行带循环的Python Tkinter加载屏与游戏文件?

解决Tkinter加载屏动画与游戏启动同步问题

问题核心

Tkinter是单线程UI框架,root.mainloop()会阻塞主线程,time.sleep()也会直接冻结加载动画;同时你当前的加载屏未与游戏启动逻辑关联,无法在游戏加载完成后自动切换。

解决方案:多线程分离UI与加载逻辑

把游戏的耗时初始化操作放到子线程,主线程专注运行加载屏动画,等子线程完成后自动关闭加载屏并启动主游戏。

修改后的加载屏代码

from tkinter import *
import threading
import time

# 替换为你游戏实际的耗时初始化逻辑(比如加载资源、初始化数据)
def init_game():
    # 示例:模拟5秒加载时间
    time.sleep(5)

def start_loading():
    def update_animation(ind):
        frame = frames[ind]
        ind += 1
        if ind == frameCnt:
            ind = 0
        loadanim.configure(image=frame)
        
        # 检查游戏是否加载完成
        if not game_thread.is_alive():
            root.destroy()
            # 此处添加启动主游戏的代码,例如:
            # import your_game_main
            # your_game_main.run_main_window()
            return
        
        root.after(100, update_animation, ind)

    root = Tk()
    root.title("Loading...")
    root.geometry("1280x720")
    root.resizable(False, False)

    # 加载资源(用原始字符串避免路径转义问题)
    Background = PhotoImage(file=r"Images\Loadscreen.png")
    frameCnt = 16
    frames = [PhotoImage(file=r'Images\Loader.gif', format='gif -index %i' % i) for i in range(frameCnt)]

    # 设置背景和动画控件
    bg_label = Label(root, image=Background)
    bg_label.place(x=0, y=0, relwidth=1, relheight=1)

    loadanim = Label(root, bg="black")
    loadanim.place(x=450, y=450)

    # 启动游戏初始化子线程
    global game_thread
    game_thread = threading.Thread(target=init_game)
    game_thread.daemon = True  # 主线程结束时自动终止子线程
    game_thread.start()

    # 启动动画循环
    root.after(0, update_animation, 0)
    root.mainloop()

if __name__ == "__main__":
    start_loading()

关键改动说明

  • 移除time.sleep():改用子线程处理耗时操作,彻底避免阻塞UI动画
  • 多线程分离:将游戏初始化逻辑放到后台线程,主线程仅负责加载屏的动画更新
  • 加载状态检测:每次动画帧更新时检查子线程是否存活,完成后自动关闭加载屏并启动游戏
  • 路径优化:用原始字符串r"路径"解决Windows路径的转义字符问题

注意事项

  • 子线程绝对不能直接操作Tkinter控件,如果需要更新加载进度,可通过queue.Queue传递进度数据,在主线程的动画循环中读取并更新UI
  • 确保主游戏窗口的启动代码在加载屏关闭后执行,避免两个Tkinter主循环冲突

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:35:20