当我启动基于GUI Tkinter的应用程序时,我正试图隐藏终端,但是当我双击OSX上的app.py文件时,会出现终端窗口。我已经尝试将扩展名更改为.pyw并尝试使用/ usr / bin / pythonw启动它,但无论如何,终端窗口仍会出现。
我甚至尝试添加下面的try / except,但是当我运行它时,我收到错误:出现在终端窗口中的'无效命令名“console”'。
from Tkinter import *
class MainWindow(Tk):
def __init__(self):
Tk.__init__(self)
try:
self.tk.call('console', 'hide')
except TclError, err:
print err
win = MainWindow()
win.mainloop()
我无法找到任何隐藏终端窗口的方法。有人有任何想法吗?
答案 0 :(得分:7)
通过双击OS X上的.py
文件,您可能会通过OS X Pythons提供的Python Launcher.app
启动Python gui实例。您可以通过在Finder中选择.py
文件并在其上执行Get Info
来验证这一点。 Python Launcher是一个非常简单的应用程序,它通过Terminal.app命令启动Python。要直接启动您自己的Python GUI应用程序,首选方法是使用py2app创建一个简单的应用程序。有一个简短的教程here。
编辑:
当然,还有其他方法,但很可能其中任何一种都会增加更多层次的间接。要制作一个可正常启动的“双击”应用程序,您需要某种应用程序结构。这就是py2app
允许您直接创建的内容。
一个非常简单的选择是利用AppleScript编辑器创建启动器应用程序的能力。在AppleScript
编辑器中:
/Applications/Utilities/AppleScript
Editor.app
/Applications/AppleScript/Script
Editor.app
制作一个类似于此的新脚本:
do shell script "/path/to/python /path/to/script.py &> /dev/null &"
然后Save As..
与File Format -> Application
。然后你将有一个双击应用程序,将启动另一个应用程序。您可以使用Apple的Automater.app
创建类似的内容。但是,在幕后,他们正在做类似py2app
为你做的事情,只是在顶层有更多层。
答案 1 :(得分:1)
添加Ned Deily的答案,我尝试使用AppleScript应用程序启动Python应用程序的情况,它最初不起作用。我发现它有某种编码错误(我使用的是UTF-8,过去我觉得需要将它配置为UTF-8)。
因此,经过进一步调查,我发现我可以通过使用以下代码创建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中,但没有可见的窗口。
我认为这可能对其他用户有用。
答案 2 :(得分:0)
'console hide'不会隐藏OS X中的终端。它隐藏了Tk的内置控制台,这实际上是MacOS Classic时代的遗留物(在Windows上仍然常用)。