Pyqt4学习笔记:app.exec_()

官方文档:http://zetcode.com/gui/pyqt4/

中文文档:http://www.qaulau.com/books/PyQt4_Tutorial/index.html

先记录简单的,以下代码可显示一个基本的window: 

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui


def main():

    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()

    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

from PyQt4 import QtGui,基本的GUI组件都存放在QtGui这个模块

app = QtGui.QApplication(sys.argv),
每个Pyqt的程序都必须创建一个application对象,application在 QtGui 模块中,sys.argv 参数是命令行中的一组参数。

w = QtGui.QWidget(),创建窗口对象,QWidget窗口组件是PyQt4中所有用户界面对象的基类,这里直接使用QWidget默认的构造。

app.exec_()其实就是QApplication的方法,原来这个exec_()方法的作用是“进入程序的主循环直到exit()被调用”,如果没有这个方法,运行的时候窗口会闪退,所以show是有发挥作用的,但没有使用exec_(),所以没有进入程序的主循环就直接结束了。于是修改代码:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui


def main():

    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()

    app.exec_()


if __name__ == '__main__':
    main()

不用sys.exit(app.exec_()),只使用app.exec_(),程序一样可以正常运行,但是关闭窗口后进程却不会退出,尝试print输出app.exec_()的结果,返回0,于是再做修改:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
from PyQt4 import QtGui


def main():

    app = QtGui.QApplication(sys.argv)

    w = QtGui.QWidget()
    w.resize(250, 150)
    w.move(300, 300)
    w.setWindowTitle('Simple')
    w.show()
    
    app.exec_()
    sys.exit(0)

if __name__ == '__main__':
    main()
这样的话,运行时打开窗口也正常,退出时进程也可以结束了。所以才可以这么用sys.exit(app.exec_())。
 

你可能感兴趣的:(Pyqt4学习笔记:app.exec_())