3

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()

ターミナルウィンドウが表示されないようにする方法を見つけることができませんでした。誰かアイデアがありますか?

4

3 に答える 3

7

OS Xでファイルをダブルクリックすると、.pyOSXPythonに付属のPythonGUIインスタンスを起動している可能性がありますPython Launcher.app.pyFinderでファイルを選択し、それを実行することで、それを確認できますGet Info。Python Launcherは、Terminal.appコマンドを介してPythonを起動する非常にシンプルなアプリです。独自のPythonGUIアプリを直接起動するには、 py2appを使用して単純なアプリを作成することをお勧めします。ここに簡単なチュートリアルがあります。

編集:

もちろん、他の方法もありますが、おそらくそれらのいずれかがより多くのレベルの間接参照を追加するでしょう。通常の起動可能な「ダブルクリック可能な」アプリケーションを作成するには、ある種のアプリ構造が必要です。それpy2appがあなたが直接作成できるものです。

非常に単純な代替手段は、AppleScriptEditorの機能を利用してランチャーアプリを作成することです。AppleScriptエディターで:

  • /Applications/Utilities/AppleScript Editor.appOSX10.6の場合

  • /Applications/AppleScript/Script Editor.app10.5で

次のような新しいスクリプトを作成します。

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

そして。Save As.._ File Format -> Application次に、別のアプリを起動するダブルクリック可能なアプリがあります。Appleと同じようなものを作成できますAutomater.app。しかし、隠れて、彼らはあなたのために行うのと同じようなことをpy2appしていますが、上にもっと多くのレイヤーがあります。

于 2009-11-27T20:47:36.703 に答える
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には表示されますが、ウィンドウは表示されません。

これは他のユーザーにも役立つと思います。

于 2016-04-26T17:41:12.923 に答える
0

「consolehide」は、OS Xのターミナルを非表示にしません。これは、Tkの組み込みコンソールを非表示にします。これは、実際にはMacOS Classic時代の遺物です(Windowsでまだ一般的に使用されています)。

于 2010-10-01T03:13:12.820 に答える