PyQt 中 sys.exit(app.exec_()) 的必要性是什么?
What is the necessity of sys.exit(app.exec_()) in PyQt?
我有这段代码,效果很好:
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()
呢?
提前致谢。
exec()
调用启动事件循环并将阻塞直到应用程序退出。如果 exit code has been set,exec()
将在事件循环终止后 return 它。将此退出代码传递给 sys.exit()
是一种很好的做法 - 但这并不是绝对必要的。如果不显式调用 sys.exit()
,脚本将在执行完最后一行代码后自动退出,代码为 0
。非零退出代码通常用于通知调用进程发生错误。
我有这段代码,效果很好:
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()
呢?
提前致谢。
exec()
调用启动事件循环并将阻塞直到应用程序退出。如果 exit code has been set,exec()
将在事件循环终止后 return 它。将此退出代码传递给 sys.exit()
是一种很好的做法 - 但这并不是绝对必要的。如果不显式调用 sys.exit()
,脚本将在执行完最后一行代码后自动退出,代码为 0
。非零退出代码通常用于通知调用进程发生错误。