【问题标题】:Tkinter program converted to .app using PyInstaller closes immediately使用 PyInstaller 转换为 .app 的 Tkinter 程序立即关闭
【发布时间】:2016-10-07 22:34:50
【问题描述】:

我有一个我写的 Tkinter GUI 战舰游戏应用程序,我正在尝试转换为 .app 文件,以便可以在 Mac OS X 计算机上轻松运行它。在cding 到包含主 .py 文件和所有子文件(其他三个 python 文件、一个 json 文件和一个图标文件)的目录之后,我正在执行以下命令:

pyinstaller --onefile --windowed --icon favicon.icns --name Battleship battleship.py

这会在“dist”文件夹中生成两个文件:BattleshipBattleship.appBattleship.app 有我在上面命令中指定的图标。

当我运行非 .app 文件(通过双击它)时,会打开一个终端窗口,我的 Tkinter GUI 会打开并且可以正常工作(根据我所做的小测试)。但是,我希望在没有终端的情况下打开 GUI。

据说这也是生成 .app 文件的目的。但是,当我运行 .app 文件(通过双击它)时,它的图标只会在屏幕底部的应用程序栏中弹跳几次,然后消失。没有打开实际的窗口。

如何在双击 .app 文件时打开应用程序的 GUI(没有终端窗口)?

提前致谢。

注意:我使用的是 Python 3.5.1

【问题讨论】:

  • ...我刚刚拿到了风滚草徽章。

标签: python macos tkinter pyinstaller .app


【解决方案1】:

RoberR 似乎您在从 pyInstaller 构建应用程序时缺少一些必要的软件包,我建议您使用:

pyinstaller --onefile --icon favicon.icns --name Battleship battleship.py 

它将显示您的终端,您将能够弄清楚发生了什么,如果缺少包,请使用:

pyinstaller --onefile --hidden-imports=file_name --icon favicon.icns --name Battleship battleship.py

希望这能解决您的问题。

【讨论】:

    【解决方案2】:

    在 .app 上使用双击时崩溃肯定是 Tkinter 的一个问题。我发现的唯一解决方法是使用“brew python3”而不是“anaconda python3”。

    【讨论】:

      【解决方案3】:

      转自:https://stackoverflow.com/a/57818744/10143204

      python 附带的 tcl 版本存在一些问题,discussed here。我编写了一个脚本,它会自动将 init.tcl 文件更改为正确的版本。

      注意您不应该使用 --onefile 标志,因为文件目录不存在,并且脚本将无法运行。

      1. cd /path/of/your/app
      2. git clone https://github.com/jacob-brown/TCLChanger.git
      3. pyinstaller --windowed app.py
      4. python TCLChanger/TCLChanger.py

      您现在应该可以从终端通过双击打开您的应用了。

      【讨论】:

      • 我试过这个,我得到这个错误:UnboundLocalError: local variable 'fileTCL' referenced before assignment
      猜你喜欢
      • 2020-12-27
      • 2018-07-15
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-30
      相关资源
      最近更新 更多