【问题标题】:What is the necessity of sys.exit(app.exec_()) in PyQt?PyQt 中 sys.exit(app.exec_()) 的必要性是什么?
【发布时间】:2018-01-12 11:14:27
【问题描述】:

我有这段代码,效果很好:

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()

提前致谢。

【问题讨论】:

  • 它只是让你在 Qt 事件循环结束后立即关闭程序,在大多数情况下,当你关闭 GUI 时
  • QApplication::exec: 必须从主线程调用

标签: python python-3.x pyqt pyqt4 exit


【解决方案1】:

exec() 调用启动事件循环并将阻塞直到应用程序退出。如果是exit code has been setexec() 将在事件循环终止后返回它。将此退出代码传递给sys.exit() 是一种很好的做法——但这并不是绝对必要的。如果没有显式调用sys.exit(),脚本将在执行完最后一行代码后自动退出并返回代码0。非零退出代码通常用于通知调用进程发生了错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多