参考 zetcode[1] 与 PyQt v5.15.0 Reference Guide/Introduction¶
1 架构简介
Qt 是一组 C++ 库和开发工具,包括用于图形用户界面,网络,线程,正则表达式,SQL数据库,SVG,OpenGL,XML,用户和应用程序设置,定位和位置服务,短距离通信( NFC 和蓝牙),网页浏览,3D 动画,图表,3D 数据可视化以及与应用商店的接口。PyQt5 将这些类中的 1000 多个实现为一组 Python 模块。
PyQt5 是 Digia 的一套 Qt5 与 Python 结合的可以在 Unix, Windows, and Mac OS 这些主流平台运行的应用框架。PyQt5(PyQt5 官方网站:https://www.riverbankcomputing.com/software/pyqt/,模块介绍的官网地址是:https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html)。
Python 如此强大的功能之一就是能够采用 C 或 C++ 编写的现有库,并将它们用作 Python 扩展模块。这种扩展模块通常称为库的绑定(bindings for the library)。PyQt5 是使用 SIP 绑定生成器(SIP bindings generator,细节可参考 SIP documentation)构建的。必须安装 SIP[2] 才能构建和使用 PyQt5。可以使用 pip 从 Python 软件包索引中安装 SIP。即:
$ pip install sip
PyQt5 包含能够使用 Python 代码扩展的插件:Qt Designer 和 qmlscene。有关详细信息,请分别参见 Writing Qt Designer Plugins 和 Integrating Python and QML。
PyQt5 还包含许多实用程序(utility programs):
- pyuic5 对应于 Qt 的 uic 实用程序。它可以将使用 Qt Designer 基于 QtWidgets 创建的 GUI 转换为 Python 代码。
- pyrcc5 对应于 Qt rcc 实用程序。它在 Python 模块中嵌入由资源收集文件描述的任意资源(例如,图标,图像,翻译文件)。
-
pylupdate5 对应于 Qt lupdate 实用程序。它从 Python 代码中提取所有可翻译的字符串,并创建或更新
.ts
转换文件。然后,Qt Linguist 使用它们来管理这些字符串的翻译。
DBus 支持模块安装为 dbus.mainloop.pyqt5。该模块以与标准 dbus-python
绑定软件包中随附的 dbus.mainloop.glib 提供对 GLib 事件循环的支持相同的方式,为 Qt 事件循环提供支持。该 API 在 DBus支持 中进行了描述。仅当安装了 dbus-python
v0.80(或更高版本)绑定软件包时,该选项才可用。QtDBus 模块为 DBus 提供了更 Qt-like 的接口。
配置 PyQt5 后,将生成一个名为 PyQt5.api
的文件。QScintilla 编辑器组件可以使用它来在编辑 PyQt5 代码时启用自动完成和调用提示。如果已经安装 QScintilla,则会自动安装该 API 文件。
PyQt5 包含大量示例。这些是 Qt 提供的许多 C++ 示例的 Python 端口。它们可以在示例目录中被找到。PyQt5 包含 SIP 用来生成 PyQt5 本身的 .sip
文件。开发人员可以将其用于其他基于 Qt 的类库的绑定。
PyQt5 主要包含如下模块(去除了已经弃用的模块):
模块名 | 描述 |
---|---|
QtCore | 包含了核心的 non-GUI functionality。用于处理时间,文件和目录,各种数据类型,streams,URL,QMimeData,线程或进程。 |
QtGui | 包含用于窗口系统集成,事件处理,2D图形,基本图像,字体和文本的类。它是小部件和 OpenGL GUI 共有的核心类。 |
QtWidgets | 包含提供一组 UI 元素的类,以创建经典的桌面样式用户界面。 |
QtDesigner | 所包含的类允许使用 PyQt 扩展Qt Designer。 |
sip | 绑定开发人员和用户的实用程序。 |
uic | 用来处理 .ui 文件,该文件由 Qt Designer 创建,用于描述整个或者部分用户界面。它可以将 .ui 文件编译为 .py 文件,以便其他 Python 程序调用。 |
QtLocation | 用于创建映射应用程序的类。 |
QtMultimedia | 包含用于处理多媒体内容的类和用于访问相机和 Radio Functionality 的 API。 |
QtMultimediaWidgets | 提供额外的与多媒体相关的小部件和控件(widgets and controls)。 |
QtBluetooth | 包含用于蓝牙设备连接和交互的类。 |
QtChart | 支持 2D 图表创建的类。 |
QtDBus | 使用 D-Bus 协议支持 IPC 的类。 |
QtDataVisualization | 支持 3D 数据可视化的类。 |
QtNetwork | 模块包含用于网络编程的类。这些类通过使网络编程更加容易和可移植,来简化 TCP / IP和 UDP 客户端和服务器的编码。 |
QtNetworkAuth | 网络授权类。 |
QtPositioning | 包含用于通过使用各种可能的来源(包括卫星,Wi-Fi 或文本文件)确定位置的类。 |
QtWebChannel | 在 Python 和 HTML / JavaScript 之间进行点对点通信的类。 |
QtWebEngine | 用于将 QML Web Engine 对象与 Python 集成的类。 |
QtWebEngineCore | Web 引擎的核心类。 |
QtWebEngineWidgets | 基于 Chromium 的 Web 浏览器。 |
QtWebSockets | 包含实现 WebSocket 协议的类。 |
QtSvg | 提供用于显示 SVG 文件内容的类。可缩放矢量图形(Scalable Vector Graphics,简写为 SVG)是一种用于描述 XML 中的二维图形和图形应用程序的语言。 |
QtSql | 提供用于处理 SQL 数据库的类。 |
QtTest | 包含启用 PyQt5 应用程序的单元测试的功能。 |
QtHelp | 包含了用于创建和查看可查找的文档的类。 |
QtWinExtras | 特定于 Windows 的附加类。 |
QtX11Extras | 特定于 X11 的附加类。 |
QtAndroidExtras | 特定于 Android 的附加类。 |
QtMacExtras | 特定于 macOS 和 iOS 的附加类。 |
QtXml | 包含用于处理 XML 文件的类。该模块提供了 SAX 和 DOM API 的实现。 |
QtXmlPatterns | 所包含的类实现了对 XML 和自定义数据模型的 Xquery 与 XPath 的支持。 |
Qt3DCore | 支持 near-realtime 仿真系统的核心类。 |
Qt3DInput | 使用 Qt3D 时处理用户输入的类。 |
Qt3DLogic | 启用帧同步(frame synchronization)的类。 |
Qt3DRender | 启用 2D 和 3D 渲染(rendering)的类。 |
Qt3DExtras | 与 Qt3D 一起使用的预构建元素。 |
Qt3DAnimation | 在仿真(simulation)中支持动画的类。 |
Qt | 将上面模块中的类综合到一个单一的模块中。这样做的好处是你不用担心哪个模块包含了哪个特定的类;坏处是加载到整个 Qt 框架中,从而增加了应用程序的内存占用。 |
QAxContainer | 用于访问 ActiveX 控件和 COM 对象的类。 |
QtNfc | 支持支持 NFC 的设备之间的连接的类。 |
QtPrintSupport | 使打印更轻松,更便携的类。 |
QtPurchasing | 支持从应用程序商店进行应用程序内购买的类。 |
QtQml | 与 QML 语言集成的类。 |
QtQuick | 使用 Python 代码扩展 QML 应用程序的类。 |
QtQuick3D | 渲染 3D Qt Quick 内容的类。 |
QtQuickWidgets | 用于在传统小部件中渲染QML场景的类。 |
QtRemoteObjects | 在进程或系统之间共享 QObject API 的类。 |
QtSensors | 用于访问系统的硬件传感器的类。 |
QtSerialPort | 用于访问系统串行端口(serial ports)的类。 |
PyQt5 只支持最新风格的信号和槽的写法。SIGNAL()
和 SLOT()
的调用将不会被长时间支持。