第一章:PyQt5简介
一、关于 PyQt5
PyQt5 是Digia的一套Qt5应用框架与python的结合,同时支持2.x和3.x。本教程使用的是3.x。Qt库由Riverbank Computing开发,是最强大的GUI库之一 ,官方网站:www.riverbankcomputing.co.uk/news。
PyQt5是由一系列Python模块组成。超过620个类,6000函数和方法。能在诸如Unix、Windows和Mac OS等主流操作系统上运行。PyQt5有两种证书,GPL和商业证书。
官方操作指南:https://www.riverbankcomputing.com/static/Docs/PyQt5/
PyQt5类分为很多模块,主要模块有:
- QtCore:QtCore模块涵盖了包的核心的非GUI功能,此模块被用于处理程序中涉及到的 time、文件、目录、数据类型、文本流、链接、mime、线程或进程等对象。
- QtGui:QtGui模块涵盖多种基本图形功能的类; 包括但不限于:窗口集、事件处理、2D图形、基本的图像和界面 和字体文本。
- QtWidgets:QtWidgets模块包含了一整套UI元素组件,用于建立符合系统风格的classic界面,非常方便,可以在安装时选择是否使用此功能。
- QtMultimedia:QtMultimedia模块包含了一套类库,该类库被用于处理多媒体事件,通过调用API接口访问摄像头、语音设备、收发消息(radio functionality)等。
- QtBluetooth:QtBluetooth模块包含了处理蓝牙活动的类库,它的功能包括:扫描设备、连接、交互等行为。
- QtNetwork:QtNetwork模块包含用于网络编程的类库,这组类程序通过提供便捷的TCP/IP 及 UDP 的 c/s 程式码集合,使得基于Qt的网络编程更容易。
- QtPositioning:QtPositioning模块用于获取位置信息,此模块允许使用多种方式达成定位,包括但不限于:卫星、无线网、文字信息。此应用一般用于网络地图定位系统。
- Enginio:Enginio模块用于构建客户端的应用程式库,用于在运行时访问 Qt Cloud 服务器托管的应用程序。
- QtWebSockets:QtWebSockets模块包含了一组类程序,用以实现websocket协议。
- QtWebKit:QtWebKit模块包含了用于实现基于webkit2的网络浏览器的类库。
- QtWebKitWidgets:QtWebKitWidgets模块包含用于基于WebKit1的Web浏览器实现的类,用于基于QtWidgets的应用程序
- QtXml:QtXml模块包含了用于处理XML的类库,此模块为SAX和DOM API 的实现提供了方法。
- QtSvg:QtSvg模块通过一组类,为显示矢量图形文件的内容提供了方法。
- QtSql:QtSql模块提供了数据库对象的接口以供使用
- QtTest:QtTest模块包含了可以通过单元测试,以调试PyQt5应用程式的功能。
二、开始安装PyQt5
Windows上安装:pip install pyqt5
验证是否安装成功,只需要导入下该模块就可以(注意大小写),如果没有出现任何错误提示,则安装成功。
三、第一个程序
运行以下代码,呈现一个简单的PyQt5程序
import sys # 1
from PyQt5.QtWidgets import QApplication, QLabel # 2
if __name__ == '__main__':
app = QApplication(sys.argv) # 3
label = QLabel('Hello World!') # 4
label.show() # 5
sys.exit(app.exec_()) # 6
注释:# 1 导入sys模块,Python的sys模块提供访问解释器使用或维护的变量,和与解释器进行交互的函数。通俗来讲,sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python运行时的环境。
# 2 导入 QApplication和 QLabel模块,
# 3 创建应用前必须先实例化一个QApplication,并将sys.argv作为参数传入;(sys.argv 获取当前正在执行的命令行参数的参数列表(list))
# 4 实例化一个QLabel控件,该控件用来展示文字或图片,这里用于展示文本。可以像上方代码一样直接传入‘Hello World’进行实例化,也可以先实例化,再调用setText()方法来设置文本。
import sys from PyQt5.QtWidgets import QApplication, QLabel if __name__ == '__main__': app = QApplication(sys.argv) label = QLabel() label.setText('Hello World') # 调用setText()方法来设置文本 label.show() sys.exit(app.exec_())
# 5 通过调用show()方法使控件可见(默认是隐藏);
# 6 app.exec_()是执行应用,让应用开始运转循环,直到窗口关闭返回0给sys.exit(),退出整个程序。 在Python2中exec是关键字,所以PyQt5就使用exec_()而不是exec() 。不过exec在Python3中已经不再是关键字了,在Python3中使用exec()也可以。
代码运行的结果:(windows下运行结果)

也可以通过在字符串中添加HTML代码,修改文本样式。
1 import sys 2 from PyQt5.QtWidgets import QApplication, QLabel 3 4 5 if __name__ == '__main__': 6 app = QApplication(sys.argv) 7 label = QLabel('<font color="red">Hello</font> <h1>World</h1>') 8 # label.setText('<font color="red">Hello</font> <h1>World</h1>') 9 label.show() 10 sys.exit(app.exec_())
代码运行结果:

四、小结
1. 本章主要介绍了PyQt5的主要模块
2. QLabel是文本控件,但是也可以用来展示图片(在之后章节讲解);
3. 可以直接在字符串中添加html代码;
4. app.exec_()用来执行应用,sys.exit()退出程序(exec就是英文当中的execute【执行】的缩写,这样记就容易了)。
浙公网安备 33010602011771号