在OSX上隐藏Tkinter应用程序的控制台

cdw*_*son 3 python macos tk-toolkit tkinter

我在启动基于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()
Run Code Online (Sandbox Code Playgroud)

我无法找到任何方法来隐藏终端窗口出现.有人有任何想法吗?

Ned*_*ily 7

通过双击.pyOS X上的文件,您可能会通过Python Launcher.appOS X Pythons提供的Python gui实例启动.您可以通过.py在Finder中选择文件并对其进行操作来验证这Get Info一点.Python Launcher是一个非常简单的应用程序,它通过Terminal.app命令启动Python.要直接启动自己的Python GUI应用程序,首选方法是使用py2app创建一个简单的应用程序.有一个简短的教程这里.

编辑:

当然还有其他方法,但很可能其中任何一种都会增加更多层次的间接.要制作一个可正常启动的"双击"应用程序,您需要某种应用程序结构.这就是py2app让你直接创造的东西.

一个非常简单的选择是利用AppleScript编辑器创建启动器应用程序的能力.在AppleScript编辑器中:

  • /Applications/Utilities/AppleScript Editor.app 在OS X 10.6中

  • /Applications/AppleScript/Script Editor.app 在10.5

制作一个类似于此的新脚本:

do shell script "/path/to/python /path/to/script.py &> /dev/null &"
Run Code Online (Sandbox Code Playgroud)

然后Save As..File Format -> Application.然后你将有一个双击应用程序,将启动另一个应用程序.您可以使用Apple创建类似的东西Automater.app.但是,在幕后,他们正在做类似于py2app你的事情,只是在顶部有更多的层.