在PyQt4中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() 

现在在我说sys.exit(app.exec_())行了,我也可以说app.exec_()两者的工作原理相同。

那么有什么区别,为什么需要写sys.exit()

在此先感谢。

+0

它只是让你在Qt事件循环结束后立即关闭程序,这在大多数情况下当你关闭GUI时 – Xatyrian

exec()调用启动事件循环并将阻塞,直到应用程序退出。如果exit code has been set,exec()将在事件循环终止后返回。将此退出代码传递给sys.exit()是一种很好的做法 - 但这并非严格必要。如果没有明确地致电sys.exit(),脚本将在代码的最后一行执行后自动退出,代码为0。通常使用非零退出代码来通知调用进程发生了错误。