2

我正在关注本教程:

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 解释器中运行它。

4

2 回答 2

4

相当于

status = app.exec_()   # run app, show window, wait for input
sys.exit(status)       # terminate program with a status code returned from app
于 2013-03-28T17:58:56.087 回答
3

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

它没有立即退出的原因是 Pythonsys.exit在知道参数的值之前无法执行,并且在完成之前它不会知道这一点app.exec_()

于 2013-03-28T17:59:00.377 回答