如何在Mac OS X上运行Python 3 tkinter应用程序而不打开任何终端窗口?

3
我使用Python 3开发了一款GUI应用程序。我希望能够通过点击脚本本身或自定义的启动脚本来运行它。我已经更改了许可权限,现在双击时可以使用“Python Launcher”打开。但每次运行我的应用程序时,会弹出许多窗口:
  • 我的Python应用程序(这是唯一需要显示在屏幕上的)

  • Python启动器首选项(我可以接受这个,但最好隐藏起来)

  • 默认shell的终端窗口(不需要这个)

  • 另一个终端窗口显示应用程序的输出(例如print、错误信息……我不需要这个窗口)

有什么最简单的方法只显示GUI,而没有任何终端窗口?

2个回答

2

在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中,但没有可见窗口。
我认为这可能对其他用户有用。

1
您可以在打包的.app应用程序的info.plist文件中设置LSUIElement(应用程序是代理),即使Python解释器也不会出现。有关详细信息,请参见此处:https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html#//apple_ref/doc/uid/20001431-108256 - Mia
它无法与我的 AppleScript 应用程序一起使用。也许那个建议只适用于一个带有自己的 Python 解释器的完整打包的应用程序...? - Victor Domingos
在寻找一小时后,您的解决方案是唯一一个按建议工作且最简单的,谢谢! - kingmilo

0
通过将文件扩展名更改为.pyw(Python窗口化),任何终端/ shell/cmd都会默认隐藏(我甚至不知道有关首选项窗口的信息)。
希望这可以帮到你!

我已经尝试过了,但是我得到了这个错误: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 - Victor Domingos
你尝试过什么?答案包含两种可能性。终端是否被隐藏了? - linusg
但是Python 3没有这些Unicode问题。顺便说一下,应该是print(" - A preparar interface gr\xe1fica."),而不是print(\" - A preparar interface gr\\xe1fica.\") - linusg
我试过了Ned Deiley的答案(编写一个AppleScript启动器)。我在之前的评论中粘贴的错误消息是从苹果的Script Editor的“结果”日志中获取的。应用程序没有启动,所以我删除了最后一部分(&> /dev/null &),只是为了看到日志,这就是显示的文本。如果我从终端窗口或IDLE中启动Python 3代码,它可以正常运行。我想我在一段时间前遇到了类似的问题,当时我不得不更改终端设置为UTF-8。但是在这里,我看不到如何进行更改。 - Victor Domingos
好的,我发现如果我在我的AppleScript启动器的开头添加export LC_ALL=en_US.UTF-8; export LANG=en_US.UTF-8;,它就可以正常工作。像这样: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 &" - Victor Domingos
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接