2009-08-21 1 views
3
下wxPythonの中のPythonコンソール退治

可能性の重複:WindowsでwxPythonのプログラムを実行するときに標準出力として表示されますコンソールを取り除くためにどのように
How can I hide the console window in a PyQt app running on Windows?は、Windows

+0

Hey Alex。私は同様の問題を抱えていますが、問題はcx_Freezeを使用してフリーズしようとした後に起こります。このファイルをどうやって走っていたのですか?ありがとう –

答えて

6

すでに、pyからpywへの名前の変更を提案している人もいます。 出力リダイレクションを参照する場合は、wx.Appクラスを作成するときにredirect = Trueを渡します。例えば

参照http://www.wxpython.org/docs/api/wx.App-class.html

__init__の署名は、あなたがなし異なるredirect=Trueとファイル名を設定した場合、sys.stdoutsys.stderrがファイル名にリダイレクトされます

__init__(self, redirect=False, filename=None, useBestVisual=False, clearSigInt=True)

です。 WindowsとMacではリダイレクトのデフォルト値はTrueであることに注意してください。 redirect==True and filename is Noneの場合、出力は他のフレームとは異なるポップアップウィンドウに印刷されます。 これは非常に便利なので、デバッグ中にリリースモードでアプリの内部とユーザーインターフェイスを混乱させずに、何が起こっているのかを追うことができます。

+1

GUIを使ってPythonアプリケーションを実行しているときに、出力リダイレクションがコンソールウィンドウが開いていることにどのように関係しているのかよくわかりません。あなたは説明できますか? –

3

私はwxPythonについてはわかりませんが、python.exeの代わりにpythonw.exeを使用して簡単に解決策を実行できます。

+0

と同様に、あなたのファイルをクリックすると、python.exeの代わりにpythonw.exeが起動されるように、whatever.pywの代わりにwhatever.pywに名前を変更します。 – Moe

6

wxPythonに精通していませんが、python.exeではなくpythonw.exeでスクリプトを呼び出すと、コンソールウィンドウが表示されません。スクリプトをscript.pywとして保存することもできます。

+0

.pywファイルであり、あなたのPythonが関連付けられている場合ウィンドウではファイルをダブルクリックするだけでコンソールなしで起動します –

+0

モジュール内にすべてのGUIコードがあり、拡張子PYのメインスクリプトがあります。すべてのファイルの名前をPYWに変更する必要がありますか? __init__.pyファイルでさえ? –

+0

いいえ「メイン」スクリプトだけです。 – AlexJReid

6

これを行う最も簡単な方法は:

if __name__ == "__main__": 
    app = wx.App(0) #<--- or False 
    frame = MyFrame('My Frame') 
    frame.Show(True) 
    app.MainLoop() 

これはwxPythonのウィンドウの代わりにstdoutに出力します。

+0

これは、アプリが読み込まれているときにエラーが発生したときに画面上でwxWindowが点滅して消えてしまい、エラーを読み取ることができなくなったために便利です。 0を追加すると、エラーがコンソールに出力されます。 – gath