为什么在PyQT Python中要将app.exec_()作为参数传递给sys.exit()函数?

5

刚接触PyQt。请问有人能解释一下为什么要这么做吗:

 sys.exit(app.exec_())

替代:

app.exec_()
sys.exit()

我已经尝试过两种方式,都可以。问题2:我认为sys.exit(n)使用参数n作为退出状态。那么在sys.exit(app.exec_())的情况下,为什么会执行app.exec_()? sys.exit()中的参数是否在系统终止应用程序之前被执行?我想可能是我对这种情况下“事件顺序”感到困惑。有人能为我澄清一下吗?谢谢。

看起来这回答了你的问题 https://dev59.com/5V8f5IYBdhLWcg3wEPEq - steven
谢谢,这回答了第一个问题。我看过那篇文章。但第二个问题呢?这是否意味着传递给sys.exit()的任何参数都会在退出之前执行?那里的事件顺序是什么? - Michael 1022
1个回答

6
这似乎回答了你的问题,但有点令人困惑,因此我将尝试重新措辞一下。 在pyqt中使用sys.exit()和app.exec_ app.exec_()返回0表示成功,如果崩溃则返回错误消息。 sys.exit(n)将值n返回给父进程(通常是您的shell)。
因此,如果分别调用它们并且app.exec_()崩溃,则shell永远不会收到错误代码。
因此,特别回答你的“问题2”,是的,首先调用内部函数。
这将产生相同的结果:
status = app.exec_()
sys.exit(status)

@Michael 如果这个回答解决了你的问题,你可以接受它作为答案。谢谢! - steven
非常有帮助,谢谢!另一个解释很让人困惑。再次感谢。 - BluePython

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接