使用pyinstaller和cx_Freez中断GUI程序

2024-10-01 19:26:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我用tkinter构建的GUI程序有以下主要部分。在

if __name__ == '__main__':
    root = Tk()
    my_gui = DataExtractorUI(root)
    root.mainloop()

DataExtractor在单击按钮时调用另一个函数。所述功能内部有多个处理任务。在

当从命令行运行时,GUI运行得非常好。在

当使用pyinstaller或cx_Freeze编译为exe时,该程序继续生成windows 1+个进程,并且无法按预期工作。在我的pyinstaller规范文件中:

^{2}$

我在一开始的命令行版本中遇到了同样的问题,通过添加if __name__ == "__main__"解决了这个问题

对于exe打包工具,我不清楚它为什么要绕过__main__入口点。在


Tags: 命令行name程序ifmaintkintermygui
1条回答
网友
1楼 · 发布于 2024-10-01 19:26:01

由于python多处理为每个派生的进程启动一个新的解释器,因此每次输入新进程时都会创建额外的窗口if __name__ == "__main__"

对于GUI程序,可以通过在程序顶部添加以下命令来解决此问题:

multiprocessing.freeze_support()

@codewarrior在他的回答中描述了解决的原因: Why python executable opens new window instance when function by multiprocessing module is called on windows

相关问题 更多 >

    热门问题