Python Qt GUI与数据可视化编程
上QQ阅读APP看书,第一时间看更新

2.1 PyQt5 GUI程序的基本框架

本节先通过一个简单的示例程序介绍PyQt5 GUI应用程序的基本框架。

启动Python自带的编程和交互式环境IDLE,点击“File”→“New File”菜单项,打开一个文件编辑窗口,在此窗口中输入下面的程序,并保存为文件demo2_1Hello.py,此文件保存在随书示例Demo2_1目录下。

        ## demo2_1Hello.py
        ## 使用PyQt5,纯代码化创建一个简单的GUI程序
        import sys
        from PyQt5 import QtCore, QtGui, QtWidgets


        app = QtWidgets.QApplication(sys.argv)   #创建app,用QApplication类
        widgetHello = QtWidgets.QWidget()        #创建窗体,用QWidget类
        widgetHello.resize(280,150)               #设置窗体的宽度和高度
        widgetHello.setWindowTitle("Demo2_1")    #设置窗体的标题文字


        LabHello = QtWidgets.QLabel(widgetHello) #创建标签,父容器为widgetHello
        LabHello.setText("Hello World, PyQt5")    #设置标签文字
        font = QtGui.QFont()     #创建字体对象font,用QFont类
        font.setPointSize(12)    #设置字体大小
        font.setBold(True)       #设置为粗体
        LabHello.setFont(font)   #设置为标签LabHello的字体
        size=LabHello.sizeHint() #获取LabHello的合适大小,返回值是QSize类对象
        LabHello.setGeometry(70, 60, size.width(), size.height())


        widgetHello.show()       #显示对话框
        sys.exit(app.exec_())    #应用程序运行

程序输入完成后,在程序编辑器窗口中点击“Run”→“Run Module”菜单项,或直接按快捷键F5就可以运行程序,会出现图2-1所示的窗口。

图2-1 文件demo2_1Hello.py运行结果窗口

这是一个典型的GUI应用程序。观察文件demo2_1Hello.py的代码,并结合程序中的注释,可以看出此程序的基本工作原理。

(1)首先导入了PyQt5包中的一些模块,包括QtCore, QtGui, QtWidgets,其中每个模块都包含了一些类。

(2)用下面的语句创建了一个应用程序。

        app = QtWidgets.QApplication(sys.argv)

这里用到了QtWidgets模块中的QApplication类。QApplication是管理GUI应用程序的控制流程和设置的类,这里创建的应用程序对象是app。

(3)使用QtWidgets模块中的QWidget类创建了窗体对象widgetHello,然后调用QWidget类的resize()函数设置窗体大小,调用setWindowTitle()函数设置窗体标题。

(4)使用QtWidgets模块中的QLabel类创建了一个标签对象LabHello,创建LabHello的语句是:

        LabHello = QtWidgets.QLabel(widgetHello)

这里将widgetHello作为参数传递给QLabel的构造函数,实际是指定widgetHello作为LabHello的父容器,这样标签LabHello才会显示在窗体widgetHello上。

后面的代码用QLabel的接口函数setText()设置标签的文字,又创建了一个QFont对象用于设置标签的字体,还设置了标签在窗体上的位置和大小。

(5)窗体显示和程序运行。

窗体widgetHello和文字标签LabHello创建并设置好各种属性后,就显示窗体并运行应用程序,即程序中的最后两行语句:

        widgetHello.show()
        sys.exit(app.exec_())

这里的窗体widgetHello是应用程序的主窗体,应用程序运行后开始消息管理。

这个示例程序演示了使用PyQt5的一些类创建GUI程序的基本过程。首先需要用QApplication类创建一个应用程序实例,然后创建一个窗体(窗体类主要有QWidget、QDialog、QMainWindow),再创建界面组件(例如一个QLabel组件)并在窗体上显示,最后是显示窗体并开始应用程序的消息循环。这个程序虽然功能很简单,只显示了一个带标签的窗口,关闭窗口还需要点击窗口右上角的关闭按钮,但它已经是一个标准的GUI应用程序。

提示 从上面的程序中可以看出,PyQt5中的类都是以大写字母Q开头命名的,如QWidget、QApplication、QLabel等,这样的命名规则很容易将PyQt5的类与其他的类或变量区分开来。