【问题标题】:How to run a Python 3 tkinter app without opening any Terminal windows in Mac OS X?如何在不打开 Mac OS X 中的任何终端窗口的情况下运行 Python 3 tkinter 应用程序?
【发布时间】:2016-08-20 06:12:27
【问题描述】:

我用 Python 3 开发了一个 GUI 应用程序。我希望能够通过单击脚本本身或在定制的启动脚本中启动它。我已经更改了权限,现在通过双击打开“Python Launcher”。但是每次我运行我的应用程序时,我都会得到很多窗口:

  • 我的 Python 应用程序(这是我唯一需要显示在屏幕上的应用程序)

  • Python 启动器首选项(我可以接受这个,但是 宁愿隐藏)

  • 带有默认外壳的终端窗口(不需要这个)

  • 另一个显示应用输出的终端窗口(如print,错误...我不想要这个窗口)

什么是只在屏幕上显示 GUI 而没有任何终端窗口的最简单方法?

【问题讨论】:

    标签: python macos python-3.x tkinter


    【解决方案1】:

    通过将文件扩展名更改为.pyw(Python Windowed),默认情况下任何终端/shell/cmd 都将被隐藏(我什至不知道首选项窗口)。

    希望这会有所帮助!

    【讨论】:

    • 我认为这不适用于 Mac 上的 Python 3。事实上,我已经尝试过了,它只是和我之前描述的一样。
    • 嗯,在 Windows 上它可以工作。我发现了别的东西:stackoverflow.com/a/1810580/5952681
    • 我已经尝试过了,但是我得到了这个错误:error "Traceback (most recent call last): File \"/Users/USER/FOLDER/SCRIPT.py\", line 1443, in <module> print(\" - A preparar interface gr\\xe1fica.\") UnicodeEncodeError: 'ascii' codec can't encode character '\\xe1' in position 26: ordinal not in range(128)" number 1
    • 看来我需要强制隐藏终端接受UTF-8编码,但我不知道如何。
    • 你试过什么?答案包含两种可能。终端隐藏了吗??
    【解决方案2】:

    按照 bu linusg 的建议,我发现可以通过使用以下代码创建 AppleScript 应用程序来完成此操作(根据需要调整 python3 和 Python 应用程序的路径):

    do shell script "export LC_ALL=en_US.UTF-8; export LANG=en_US.UTF-8; /usr/local/bin/python3 '/Users/USER/FOLDER/SCRIPT.py' &> /dev/null &"
    

    它在没有终端窗口的情况下启动 Python 应用程序。然后,AppleScript 应用程序可以像往常一样使用自定义图标进行个性化,并且可以放置在 Dock 中。单击时,它将启动 Python 解释器,该解释器仍显示在 Dock 中,但没有可见窗口。

    我认为这可能对其他用户有用。

    【讨论】:

    • 你可以在打包的.app应用程序的info.plist文件中设置LSUIElement(应用程序是代理),甚至python解释器也不会出现。详情见这里:developer.apple.com/library/content/documentation/General/…
    • 它不适用于我的 AppleScript 应用程序。也许该建议仅适用于具有自己的 Python 解释器的完整打包应用程序...?
    • 经过一个小时的寻找方法后,您的解决方案是他只有一个按建议工作的方法,这是最简单的,谢谢!
    猜你喜欢
    • 2020-10-01
    • 2016-06-22
    • 2010-11-12
    • 2011-01-31
    • 1970-01-01
    • 2022-06-11
    • 2014-07-25
    • 2021-12-13
    • 1970-01-01
    相关资源
    最近更新 更多