为什么应用程序会在sys.exit命令后显示?

时间:2013-03-28 17:56:09

标签: python ipython

我遵循本教程:

http://zetcode.com/tutorials/pyqt4/firstprograms/

在第一个例子中,我不明白为什么应用程序只在命令后显示:

sys.exit(app.exec_())

另外,我稍微修改了代码以测试事物

import sys
from PyQt4 import QtGui


if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    w = QtGui.QWidget()
    w.resize(250,150)
    w.move(300,300)
    w.setWindowTitle("Title")
    w.show()
    sys.exit(app.exec_())

如果我在终端中运行它并注释掉最后一行,它只会在运行最后一行后显示窗口。

我不太明白最后一行是做什么的。

编辑:

我也很困惑为什么没有appw的引用我希望某种迹象表明w是一个孩子或某事app

我在Spyder和一个IPython解释器中运行它。

2 个答案:

答案 0 :(得分:4)

相当于

status = app.exec_()   # run app, show window, wait for input
sys.exit(status)       # terminate program with a status code returned from app

答案 1 :(得分:3)

最后一行是两个功能。首先它运行app.exec_()(显示应用程序的主窗口),然后当该函数结束时,它将返回值作为参数传递给sys.exit,它结束程序并发送返回值到操作系统(程序结束后,您可以在* nix系统上看到echo $?)。

它没有立即退出的原因是Python无法执行sys.exit,直到它知道参​​数的值,并且在app.exec_()完成之前它不会知道。 / p>