2017-09-02 1 views
0

Ubuntu用のPython GUIアプリケーションがあり、これも端末にメッセージを表示します。 GUIの「終了」メニューは次のようになります。Python:ターミナルウィンドウを閉じた後に 'print'を使ったGUI機能が動作しなくなった

def quit(): 
    print('exiting') 
    Gtk.main_quit() 

私は、バックグラウンドで私のアプリを実行すると、アプリがまだ実行されている間、私はターミナルを終了した場合は、上記のquit関数は何もしません。ただし、printステートメントを削除すると、アプリケーションが期待どおりに終了します。

それで、printステートメントが残りのスクリプトが実行されないようになっているようです。どうすればこれを避けることができますか?

答えて

1

代わりにログを使用してください。 print文の代わりに

import logging

logging.basicConfig(filename='gui_app.log', level=logging.INFO, propogate=0)

使用logging.info("Exiting")、ロギングはアプリを監視するための適切な方法であり、制御の流れを中断しません。

+0

これは実際に動作します。しかし、コンソールが開いている限り、カスタムのコンソールメッセージは表示されません。常にINFO: – bluppfisk

+0

の接頭辞です。これはログ記録プロトコルなので、 'logging.info'を使用しているので、終了通知がINFOとしてカウントされるためINFOの接頭辞が付きます。警告、エラーなどを使用できます。完全なリストはhttps://docs.python.org/2/library/logging.htmlにあります。 ロギングを正しく使用すると、ほとんど問題はありません適切なメッセージが表示されるため、デバッグする必要があります。 –

+0

ええ、私はちょうどターミナルから私のアプリを起動する誰にでもきれいなメッセージを送信したいと思います。それはPythonスクリプトなので、それはむしろそうです。 – bluppfisk

関連する問題