PyQt5 系統(tǒng)化學(xué)習(xí): 架構(gòu)簡(jiǎn)介

參考 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 PluginsIntegrating 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í)間支持麻顶。


  1. 這個(gè)教程比較好的地方是赦抖,能講解每一段代碼的含義 ?

  2. SIP 是自動(dòng)為 C 和 C ++ 庫生成 Python 綁定的工具。SIP 最初于 1998 年為 PyQt(Qt GUI工具包的Python綁定)開發(fā)辅肾,但適用于為任何 C 或 C ++ 庫生成綁定队萤。SIP 也可以用于編寫自包含的擴(kuò)展模塊,即無需封裝庫宛瞄。 ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浮禾,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子份汗,更是在濱河造成了極大的恐慌盈电,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杯活,死亡現(xiàn)場(chǎng)離奇詭異匆帚,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)旁钧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門吸重,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人歪今,你說我怎么就攤上這事嚎幸。” “怎么了寄猩?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵嫉晶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我,道長(zhǎng)替废,這世上最難降的妖魔是什么箍铭? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮椎镣,結(jié)果婚禮上诈火,老公的妹妹穿的比我還像新娘。我一直安慰自己状答,他們只是感情好冷守,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著剪况,像睡著了一般教沾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上译断,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音或悲,去河邊找鬼孙咪。 笑死,一個(gè)胖子當(dāng)著我的面吹牛巡语,可吹牛的內(nèi)容都是我干的翎蹈。 我是一名探鬼主播,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼男公,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼荤堪!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起枢赔,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤澄阳,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后踏拜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體碎赢,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年速梗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了肮塞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡姻锁,死狀恐怖枕赵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情位隶,我是刑警寧澤拷窜,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響装黑,放射性物質(zhì)發(fā)生泄漏副瀑。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一恋谭、第九天 我趴在偏房一處隱蔽的房頂上張望糠睡。 院中可真熱鬧,春花似錦疚颊、人聲如沸肋僧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至忠售,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間缤底,已是汗流浹背扁耐。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留款熬,地道東北人深寥。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像贤牛,于是被迫代替她去往敵國和親惋鹅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361