本教程的目的是带领你入门 PyQt5。教程内所有代码都在 Linux 上测试通过。PyQt4 教程是 PyQt4 的教程,PyQt4 是一个 Python(同时支持 2 和 3)版的 Qt 库。
关于 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 和商业证书。
PyQt5 类分为很多模块,主要模块有:
QtCore 包含了核心的非 GUI 的功能。主要和时间、文件与文件夹、各种数据、流、URLs、mime 类文件、进程与线程一起使用。
QtGui 包含了窗口系统、事件处理、2D 图像、基本绘画、字体和文字类。
QtWidgets
QtMultimedia
QtBluetooth
QtNetwork
QtPositioning
Enginio
QtWebSockets
QtWebKit
QtWebKitWidgets
QtXml
QtSvg
QtSql
QtTest
QtWidgets 类包含了一系列创建桌面应用的 UI 元素。QtMultimedia 包含了处理多媒体的内容和调用摄像头 API 的类。QtBluetooth 模块包含了查找和连接蓝牙的类。QtNetwork 包含了网络编程的类,这些工具能让 TCP/IP 和 UDP 开发变得更加方便和可靠。QtPositioning 包含了定位的类,可以使用卫星、WiFi 甚至文本。Engine 包含了通过客户端进入和管理 Qt Cloud 的类。QtWebSockets 包含了 WebSocket 协议的类。QtWebKit 包含了一个基 WebKit2 的 web 浏览器。QtWebKitWidgets 包含了基于 QtWidgets 的 WebKit1 的类。QtXml 包含了处理 xml 的类,提供了 SAX 和 DOM API 的工具。QtSvg 提供了显示 SVG 内容的类,Scalable Vector Graphics (SVG) 是一种是一种基于可扩展标记语言(XML),用于描述二维矢量图形的图形格式(这句话来自于维基百科)。QtSql 提供了处理数据库的工具。QtTest 提供了测试 PyQt5 应用的工具。
PyQt4 和 PyQt5 的区别
PyQt5 不兼容 PyQt4。PyQt5 有一些巨大的改进。但是,迁移并不是很难,两者的区别如下:
重新组合模块,一些模块已经被废弃 (QtScript),有些被分为两个子模块 (QtGui, QtWebKit)。
添加了新的模块,比如 QtBluetooth, QtPositioning,和 Enginio。
废弃了 SINGAL() 和 SLOT() 的调用方式,使用了新的信号和 xx 处理方式。
不再支持被标记为废弃的或不建议使用的 API。