sys.exit(app.exec_()) 和 app.exec_() 之间的区别

Nor*_*ern 6 python pyqt sys pyside

我正在使用 PySide 和 PyQt 进行 GUI 开发。我一直在使用这些代码来运行 GUI 应用程序:

app = QApplication(sys.argv)
ex = MyWin()
ex.show()
sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

偶然发现如果我替换sys.exit(app.exec_())为 only app.exec_(),程序仍然可以正常运行并且可以正确退出。那么这两者有什么区别呢?我有理由使用sys.exit(app.exec_())吗?

Kit*_*oko 2

当我阅读Python 文档时,参数arg可以是给出退出状态的整数。所以返回app.exec_()可以看出code exit status。正如文档所说QCoreApplication.exit (int returnCode = 0)

按照约定,returnCode 为 0 表示成功,任何非零值表示错误。

所以原因是告诉 Python 的代码退出状态PyQt。如果您避免它,程序将立即关闭。

  • 这并非100%正确。它不是告诉 *Python* 有关退出代码的信息,而是告诉 *父进程*(可能是像 bash 或 `explorer.exe` 这样的 shell)。对于父进程来说,返回码“0”意味着一切正常。其他任何情况都被视为程序异常终止。如果您批量申请,这一点可能很重要。但在 GUI 应用程序中,情况可能并非如此,而且也不是很重要。也许,在 Windows 中,您会收到有关事件查看器的通知。但我对此并不确定。我不是 Windows 用户 ;) (8认同)