2017-08-04 24 views
0

私は正常に動作し、このコードを、持っている:私はsys.exit(app.exec_())を言うラインに今PyQt4のsys.exit(app.exec_())の必要性は何ですか?

import sys 
from PyQt4 import QtGui 

def main_window(): 
    app = QtGui.QApplication(sys.argv) 
    screen = QtGui.QDesktopWidget().screenGeometry() 

    widget = QtGui.QWidget() 
    widget.setWindowTitle("Center!") 
    widget.setGeometry(200, 100, screen.width() - 400, screen.height() - 200) 

    label = QtGui.QLabel(widget) 
    label.setText("Center!") 
    label.move(widget.frameGeometry().width()/2, widget.frameGeometry().height()/2) 

    widget.show() 
    sys.exit(app.exec_()) 

if __name__ == "__main__": 
    main_window() 

を、私はまた、app.exec_()を言うことができるとの両方が同じに動作します。

違いは何ですか、なぜsys.exit()と書く必要がありますか?

ありがとうございます。

+0

Qtイベントループが終了した直後にプログラムをすぐに閉じることができます。これは、ほとんどの場合GUIを閉じるときです – Xatyrian

答えて

1

exec()コールはイベントループを開始し、アプリケーションが終了するまでブロックします。 exit code has been setの場合、イベントループが終了した後にexec()が戻ります。この出口コードをsys.exit()に転送することをお勧めしますが、厳密には必要ではありません。 sys.exit()を明示的に呼び出さないと、最後のコード行が実行された後に、コードは0のコードで自動的に終了します。ゼロ以外の終了コードは通常、呼び出しプロセスにエラーが発生したことを通知するために使用されます。

関連する問題