2009-11-27 72 views
3

我試圖在啓動基於GUI Tkinter的應用程序時隱藏終端,但是當我雙擊OSX上的app.py文件時,終端窗口就會出現。我已經嘗試將擴展名更改爲.pyw,並嘗試使用/ usr/bin/pythonw啓動它,但不管如何,終端窗口仍然顯示。在OSX上隱藏Tkinter應用程序的控制檯

我甚至嘗試添加下面的try/except,但是當我運行它時出現錯誤:'invalid command name'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() 

我一直沒有找到任何方法來隱藏終端窗口出現。任何人有任何想法?

回答

7

通過雙擊OS X上的.py文件,您可能會通過隨OS X Pythons提供的Python Launcher.app啓動Python gui實例。您可以通過在Finder中選擇.py文件並對其執行Get Info來驗證。 Python啓動器是一個非常簡單的應用程序,它通過Terminal.app命令啓動Python。要直接啓動您自己的Python GUI應用程序,首選方法是使用py2app創建一個簡單的應用程序。有一個簡短的教程here

編輯:

還有其他的方法,當然,但最有可能的任何人將間接增加更多層次。要製作一個正常啓動的「雙擊」應用程序,您需要某種應用程序結構。這就是py2app可以讓你直接創建。

一個非常簡單的選擇是利用AppleScript編輯器創建啓動器應用程序的能力。在AppleScript編輯:

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

  • /Applications/AppleScript/Script Editor.app 10.5

做類似這樣的一個新的腳本:

do shell script "/path/to/python /path/to/script.py &> /dev/null &" 

然後Save As..File Format -> Application。然後,您將擁有一個可以啓動另一個應用的雙擊應用。您可以創建類似於Apple的Automater.app的東西。但是,在封面之下,他們正在做類似於py2app爲您做的事情,只是在頂層有更多圖層。

+0

感謝您的鏈接。那麼可以肯定地說,沒有辦法簡單地禁止終端啓動而不使用py2app? – cdwilson 2009-11-30 01:00:05

+0

參見上面的編輯。 – 2009-11-30 01:53:10

0

'console hide'並不隱藏OS X中的終端。它隱藏了Tk的內置控制檯,這實際上是MacOS Classic時代的遺留物(並且仍然在Windows上常用)。

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 &"

它啓動了沒有任何Terminal窗口的Python應用程序。 AppleScript應用程序可以像平常一樣使用自定義圖標進行個性化設置,並且可以放置在Dock中。點擊後,它將啓動Python解釋器,它仍然顯示在Dock中,但沒有可見的窗口。

我認爲這可能對其他用戶有用。

相關問題