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

Tkinter+多进程打包为exe后GUI重复打开的问题求助

问题根源

Windows平台下,PyInstaller打包的exe启动子进程时会重新加载主脚本,导致if __name__ == "__main__"中的GUI初始化代码被子进程重复执行,进而不断弹出新窗口。

修复方案

给主脚本加上freeze_support()并重构入口逻辑,确保子进程不会触发GUI代码:

from multiprocessing import Process, freeze_support
import tkinter as tk

from app.scheduler import schedule_upload
from app.addRedditAccount import AddRedditAccount


def run_app():
    window = tk.Tk()
    AddRedditAccount(window)

    schedule = Process(name='schedule', target=schedule_upload)
    schedule.start()

    window.mainloop()


if __name__ == "__main__":
    freeze_support()  # Windows打包时必须调用,阻止子进程重复执行主入口
    run_app()
补充说明
  • freeze_support()是multiprocessing专为Windows打包场景设计的函数,它会拦截子进程对主脚本的重复执行逻辑。
  • 确保schedule_upload所在的模块没有导入主脚本,避免潜在的循环导入或意外执行问题。

内容的提问来源于stack exchange,提问作者Asad Ur Rehman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:20:28