參考 zetcode[1] 與 PyQt v5.15.0 Reference Guide/Introduction?
1 架構(gòu)簡(jiǎn)介
Qt 是一組 C++ 庫和開發(fā)工具,包括用于圖形用戶界面退疫,網(wǎng)絡(luò)俺夕,線程漏麦,正則表達(dá)式例书,SQL數(shù)據(jù)庫友多,SVG,OpenGL闲昭,XML罐寨,用戶和應(yīng)用程序設(shè)置,定位和位置服務(wù)序矩,短距離通信( NFC 和藍(lán)牙)鸯绿,網(wǎng)頁瀏覽,3D 動(dòng)畫簸淀,圖表瓶蝴,3D 數(shù)據(jù)可視化以及與應(yīng)用商店的接口。PyQt5 將這些類中的 1000 多個(gè)實(shí)現(xiàn)為一組 Python 模塊租幕。
PyQt5 是 Digia 的一套 Qt5 與 Python 結(jié)合的可以在 Unix, Windows, and Mac OS 這些主流平臺(tái)運(yùn)行的應(yīng)用框架舷手。PyQt5(PyQt5 官方網(wǎng)站:https://www.riverbankcomputing.com/software/pyqt/,模塊介紹的官網(wǎng)地址是:https://www.riverbankcomputing.com/static/Docs/PyQt5/module_index.html)劲绪。
Python 如此強(qiáng)大的功能之一就是能夠采用 C 或 C++ 編寫的現(xiàn)有庫男窟,并將它們用作 Python 擴(kuò)展模塊。這種擴(kuò)展模塊通常稱為庫的綁定(bindings for the library)贾富。PyQt5 是使用 SIP 綁定生成器(SIP bindings generator歉眷,細(xì)節(jié)可參考 SIP documentation)構(gòu)建的。必須安裝 SIP[2] 才能構(gòu)建和使用 PyQt5颤枪『辜瘢可以使用 pip 從 Python 軟件包索引中安裝 SIP。即:
$ pip install sip
PyQt5 包含能夠使用 Python 代碼擴(kuò)展的插件:Qt Designer 和 qmlscene畏纲。有關(guān)詳細(xì)信息扇住,請(qǐng)分別參見 Writing Qt Designer Plugins 和 Integrating Python and QML。
PyQt5 還包含許多實(shí)用程序(utility programs):
- pyuic5 對(duì)應(yīng)于 Qt 的 uic 實(shí)用程序霍骄。它可以將使用 Qt Designer 基于 QtWidgets 創(chuàng)建的 GUI 轉(zhuǎn)換為 Python 代碼台囱。
- pyrcc5 對(duì)應(yīng)于 Qt rcc 實(shí)用程序。它在 Python 模塊中嵌入由資源收集文件描述的任意資源(例如读整,圖標(biāo)簿训,圖像,翻譯文件)米间。
-
pylupdate5 對(duì)應(yīng)于 Qt lupdate 實(shí)用程序强品。它從 Python 代碼中提取所有可翻譯的字符串,并創(chuàng)建或更新
.ts
轉(zhuǎn)換文件屈糊。然后的榛,Qt Linguist 使用它們來管理這些字符串的翻譯。
DBus 支持模塊安裝為 dbus.mainloop.pyqt5逻锐。該模塊以與標(biāo)準(zhǔn) dbus-python
綁定軟件包中隨附的 dbus.mainloop.glib 提供對(duì) GLib 事件循環(huán)的支持相同的方式夫晌,為 Qt 事件循環(huán)提供支持雕薪。該 API 在 DBus支持 中進(jìn)行了描述。僅當(dāng)安裝了 dbus-python
v0.80(或更高版本)綁定軟件包時(shí)晓淀,該選項(xiàng)才可用所袁。QtDBus 模塊為 DBus 提供了更 Qt-like 的接口。
配置 PyQt5 后凶掰,將生成一個(gè)名為 PyQt5.api
的文件燥爷。QScintilla 編輯器組件可以使用它來在編輯 PyQt5 代碼時(shí)啟用自動(dòng)完成和調(diào)用提示。如果已經(jīng)安裝 QScintilla懦窘,則會(huì)自動(dòng)安裝該 API 文件前翎。
PyQt5 包含大量示例。這些是 Qt 提供的許多 C++ 示例的 Python 端口畅涂。它們可以在示例目錄中被找到港华。PyQt5 包含 SIP 用來生成 PyQt5 本身的 .sip
文件。開發(fā)人員可以將其用于其他基于 Qt 的類庫的綁定毅戈。
PyQt5 主要包含如下模塊(去除了已經(jīng)棄用的模塊):
模塊名 | 描述 |
---|---|
QtCore | 包含了核心的 non-GUI functionality苹丸。用于處理時(shí)間,文件和目錄苇经,各種數(shù)據(jù)類型赘理,streams,URL扇单,QMimeData商模,線程或進(jìn)程。 |
QtGui | 包含用于窗口系統(tǒng)集成蜘澜,事件處理施流,2D圖形,基本圖像鄙信,字體和文本的類瞪醋。它是小部件和 OpenGL GUI 共有的核心類。 |
QtWidgets | 包含提供一組 UI 元素的類装诡,以創(chuàng)建經(jīng)典的桌面樣式用戶界面银受。 |
QtDesigner | 所包含的類允許使用 PyQt 擴(kuò)展Qt Designer。 |
sip | 綁定開發(fā)人員和用戶的實(shí)用程序鸦采。 |
uic | 用來處理 .ui 文件宾巍,該文件由 Qt Designer 創(chuàng)建,用于描述整個(gè)或者部分用戶界面渔伯。它可以將 .ui 文件編譯為 .py 文件顶霞,以便其他 Python 程序調(diào)用。 |
QtLocation | 用于創(chuàng)建映射應(yīng)用程序的類锣吼。 |
QtMultimedia | 包含用于處理多媒體內(nèi)容的類和用于訪問相機(jī)和 Radio Functionality 的 API选浑。 |
QtMultimediaWidgets | 提供額外的與多媒體相關(guān)的小部件和控件(widgets and controls)蓝厌。 |
QtBluetooth | 包含用于藍(lán)牙設(shè)備連接和交互的類。 |
QtChart | 支持 2D 圖表創(chuàng)建的類鲜侥。 |
QtDBus | 使用 D-Bus 協(xié)議支持 IPC 的類褂始。 |
QtDataVisualization | 支持 3D 數(shù)據(jù)可視化的類诸典。 |
QtNetwork | 模塊包含用于網(wǎng)絡(luò)編程的類描函。這些類通過使網(wǎng)絡(luò)編程更加容易和可移植,來簡(jiǎn)化 TCP / IP和 UDP 客戶端和服務(wù)器的編碼狐粱。 |
QtNetworkAuth | 網(wǎng)絡(luò)授權(quán)類舀寓。 |
QtPositioning | 包含用于通過使用各種可能的來源(包括衛(wèi)星,Wi-Fi 或文本文件)確定位置的類肌蜻。 |
QtWebChannel | 在 Python 和 HTML / JavaScript 之間進(jìn)行點(diǎn)對(duì)點(diǎn)通信的類互墓。 |
QtWebEngine | 用于將 QML Web Engine 對(duì)象與 Python 集成的類。 |
QtWebEngineCore | Web 引擎的核心類蒋搜。 |
QtWebEngineWidgets | 基于 Chromium 的 Web 瀏覽器篡撵。 |
QtWebSockets | 包含實(shí)現(xiàn) WebSocket 協(xié)議的類。 |
QtSvg | 提供用于顯示 SVG 文件內(nèi)容的類豆挽∮可縮放矢量圖形(Scalable Vector Graphics,簡(jiǎn)寫為 SVG)是一種用于描述 XML 中的二維圖形和圖形應(yīng)用程序的語言帮哈。 |
QtSql | 提供用于處理 SQL 數(shù)據(jù)庫的類膛檀。 |
QtTest | 包含啟用 PyQt5 應(yīng)用程序的單元測(cè)試的功能。 |
QtHelp | 包含了用于創(chuàng)建和查看可查找的文檔的類娘侍。 |
QtWinExtras | 特定于 Windows 的附加類咖刃。 |
QtX11Extras | 特定于 X11 的附加類。 |
QtAndroidExtras | 特定于 Android 的附加類憾筏。 |
QtMacExtras | 特定于 macOS 和 iOS 的附加類嚎杨。 |
QtXml | 包含用于處理 XML 文件的類。該模塊提供了 SAX 和 DOM API 的實(shí)現(xiàn)氧腰。 |
QtXmlPatterns | 所包含的類實(shí)現(xiàn)了對(duì) XML 和自定義數(shù)據(jù)模型的 Xquery 與 XPath 的支持枫浙。 |
Qt3DCore | 支持 near-realtime 仿真系統(tǒng)的核心類。 |
Qt3DInput | 使用 Qt3D 時(shí)處理用戶輸入的類容贝。 |
Qt3DLogic | 啟用幀同步(frame synchronization)的類自脯。 |
Qt3DRender | 啟用 2D 和 3D 渲染(rendering)的類。 |
Qt3DExtras | 與 Qt3D 一起使用的預(yù)構(gòu)建元素斤富。 |
Qt3DAnimation | 在仿真(simulation)中支持動(dòng)畫的類膏潮。 |
Qt | 將上面模塊中的類綜合到一個(gè)單一的模塊中。這樣做的好處是你不用擔(dān)心哪個(gè)模塊包含了哪個(gè)特定的類满力;壞處是加載到整個(gè) Qt 框架中焕参,從而增加了應(yīng)用程序的內(nèi)存占用轻纪。 |
QAxContainer | 用于訪問 ActiveX 控件和 COM 對(duì)象的類。 |
QtNfc | 支持支持 NFC 的設(shè)備之間的連接的類叠纷。 |
QtPrintSupport | 使打印更輕松刻帚,更便攜的類。 |
QtPurchasing | 支持從應(yīng)用程序商店進(jìn)行應(yīng)用程序內(nèi)購買的類涩嚣。 |
QtQml | 與 QML 語言集成的類崇众。 |
QtQuick | 使用 Python 代碼擴(kuò)展 QML 應(yīng)用程序的類。 |
QtQuick3D | 渲染 3D Qt Quick 內(nèi)容的類航厚。 |
QtQuickWidgets | 用于在傳統(tǒng)小部件中渲染QML場(chǎng)景的類顷歌。 |
QtRemoteObjects | 在進(jìn)程或系統(tǒng)之間共享 QObject API 的類。 |
QtSensors | 用于訪問系統(tǒng)的硬件傳感器的類幔睬。 |
QtSerialPort | 用于訪問系統(tǒng)串行端口(serial ports)的類眯漩。 |
PyQt5 只支持最新風(fēng)格的信號(hào)和槽的寫法。SIGNAL()
和 SLOT()
的調(diào)用將不會(huì)被長(zhǎng)時(shí)間支持麻顶。