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
相关产品推荐
相关产品推荐

