這篇文章將為大家詳細(xì)講解有關(guān)怎樣理解Qt For Python的模塊結(jié)構(gòu),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)建站擁有十年成都網(wǎng)站建設(shè)工作經(jīng)驗,為各大企業(yè)提供成都網(wǎng)站建設(shè)、成都網(wǎng)站制作服務(wù),對于網(wǎng)頁設(shè)計、PC網(wǎng)站建設(shè)(電腦版網(wǎng)站建設(shè))、成都app開發(fā)、wap網(wǎng)站建設(shè)(手機(jī)版網(wǎng)站建設(shè))、程序開發(fā)、網(wǎng)站優(yōu)化(SEO優(yōu)化)、微網(wǎng)站、域名與空間等,憑借多年來在互聯(lián)網(wǎng)的打拼,我們在互聯(lián)網(wǎng)網(wǎng)站建設(shè)行業(yè)積累了很多網(wǎng)站制作、網(wǎng)站設(shè)計、網(wǎng)絡(luò)營銷經(jīng)驗,集策劃、開發(fā)、設(shè)計、營銷、管理等網(wǎng)站化運作于一體,具備承接各種規(guī)模類型的網(wǎng)站建設(shè)項目的能力。
在安裝完成PyQt5/PySide2之后,我們先不急著開始進(jìn)行Python圖形界面的編程。因為現(xiàn)在我們對PyQt5和PySide2還一無所知。
PyQt5和PySide2都是QT圖形界面開發(fā)包的Python封裝模塊,它們最大程度地利用Python編程語言還原了QT在原生C++下實現(xiàn)的功能和定義。所以我們使用PyQt5或是PySide2都可以較完整地在Python編程語言中完成QT的圖形界面應(yīng)用開發(fā)。
同時,由于PyQt5和PySide2的發(fā)展歷史、授權(quán)協(xié)議等有所差異,所以我們在此建議大家對兩者進(jìn)行如下選擇:
如果只是想快速學(xué)習(xí)在Python中進(jìn)行圖形界面編程或者開發(fā)的是開源非商業(yè)用途的圖形界面應(yīng)用程序,那么推薦大家選擇PyQt5;
如果開發(fā)的圖形界面應(yīng)用程序未來可能用作商業(yè)用途,那么建議大家使用PyQt5進(jìn)行開發(fā),然后將其轉(zhuǎn)換為PySide2代碼,最后進(jìn)行打包;
PySide2在Qt官方的大力支持下,各方面已經(jīng)越來越完善,可以嘗試完全使用PySide2。
所以在《一看就懂的Python圖形界面編程》系列教程中,為了方便演示,我們使用PyQt5進(jìn)行知識點示例代碼的講解。如果有讀者對PySide2的代碼有需求,可以自行替換。
(對于大多數(shù)子模塊而言,只需要簡單的將模塊引入中的PyQt5替換為PySide2即可,其他特殊模塊則可以參考官網(wǎng)文檔說明)。
在開始使用PyQt5/PySide2進(jìn)行Python圖形界面編程之前,我們先來了解一些我們即將使用的圖形界面開發(fā)模塊的結(jié)構(gòu)。就像對房屋進(jìn)行裝修之前,只有對房屋的結(jié)構(gòu)、構(gòu)成有了了解,才能更好的進(jìn)行施工。
PyQt5/PySide2作為一個大型的模塊,不像一些小的模塊只有極少數(shù)的子類和方法屬性,其擁有大量的子模塊、定義和對象,如果不對其全局的結(jié)構(gòu)有一個了解,就會陷入不知從何開始的困局。
在安裝完成PyQt5/PySide2之后,我們就可以在IDE或代碼編輯器中通過from……import……,或直接的import對其進(jìn)行引入使用了。
在IDE中使用from語法引入PyQt5/PySide2,代碼如下所示:
from PyQt5 import Q如果你使用的IDE或代碼編輯器有智能提示功能,那么就會顯示PyQt5模塊下的以Q開頭的子模塊,如下圖所示:
因為QT模塊的風(fēng)格就是子模塊都是Q開頭,所以IDE智能提示中顯示的子模塊基本上包含了PyQt5中所有的子模塊。
這些子模塊包含但不限于以下模塊:
QtCore,QtWidgets,QtGui,QAxContainer,QtBluetooth,QtDBus,QtDesigner,QtHelp,QtLocation,QtMultimedia,QtMultimediaWidgets,QtNetwork,QtNetworkAuth,QtNfc,QtOpenGL,QtPositioning,QtPrintSupport,QtQml,QtQuick,QtQuickWidgets,QtRemoteObjects,QtSensors,QtSerialPort,QtSql,QtSvg,QtTest,QtWebChannel,QtWebSockets,QtWinExtras,QtXml,QtXmlPatterns
在這些模塊中,大致可以分為以下幾個類別:
基礎(chǔ)模塊,這一類的模塊都是通用且核心的,對于大多數(shù)的QT應(yīng)用程序來說都是用得著的模塊;
QT功能模塊,這一類模塊是用于具體用途和功能開發(fā)所使用到的模塊;
QT工具模塊,這類模塊屬于QT提供的用于提高圖形界面開發(fā)效率的工具;
下面我們分別來認(rèn)識一下幾類模塊。
在PyQt5的通用基礎(chǔ)模塊中,又分為核心基礎(chǔ)模塊和一般性基礎(chǔ)模塊。這個其實很好理解,核心基礎(chǔ)模塊,相當(dāng)于一棟房子的地基、承重梁、水泥磚頭等等,用于搭建起房屋的基本結(jié)構(gòu);
屬于基礎(chǔ)模塊的子模塊有以下模塊:
QtCore:這個是PyQt5中的其他模塊使用到的核心非圖形類。這個模塊就像是建造房屋的地基和鋼筋,為健壯的圖形界面程序提供核心且強大的功能支持,其提供了諸如線程(QThread、QThreadPool)、動畫(QAbstractAnimation)、事件響應(yīng)(pyqtSignal、pyqtSlot、QEvent)、輸入/輸出對象(QSettings、QFileinfo)等功能。一個使用PyQt5編寫的圖形界面程序可以不使用QtCore模塊,但是一個PyQt5編寫的強大圖形界面程序,肯定會使用到QtCore模塊。
QtGui:這個是PyQt5中圖形用戶界面組件的基類。其提供了用于圖形窗口集成、圖形事件處理、2D圖形圖像、字體和文本的子類。有諸如圖形拖放(QDrag、QDropEvent)、圖像顯示(QBitmap、QImage)、字體定義(QFont)、顏色定義(QColor)、繪筆(QPen)等等的子類,類似于建造房屋時的墻面修砌。
QtWidget:這個是PyQt5中擴(kuò)展了QtGui模塊的控件模塊,所謂控件模塊,就是其提供了大量的控件及其布局類。這就相當(dāng)于房子里面客廳、廚房、陽臺、臥室,以及其中的各種家具、擺件、電器、設(shè)備等等。我們在圖形界面編程過程中會使用到大量的QtWidget中的子類,圖形界面程序中的窗口、按鈕、輸入框、文本框、選擇框、布局等等都是使用它的子類。如同建造房子,我們沒有地基(QtCore)、不用水泥砌墻(QtGui),也能用木板和樹葉(QtWidget)搭建出一個簡易的小屋出來。
上述的三個子模塊,是PyQt5中傳統(tǒng)圖形界面程序編程涉及到的核心模塊。
注意:我們知道,原生的Qt使用的是C++語言進(jìn)行圖形界面的開發(fā),從Qt4.7開始,Qt中引入了一種新的圖形界面開發(fā)語言——QML作為原生QT開發(fā)語言C++的替代品,同時其構(gòu)建了一套名為QtQuick的類庫,用于使用自定義圖形界面來構(gòu)建高度動態(tài)的圖形界面應(yīng)用程序。
其屬于Qt開發(fā)的另一個分支,Qt的Python封裝包中也包含了相關(guān)的模塊支持,但是在本系列教程中,我們只使用傳統(tǒng)Qt圖形界面開發(fā)的模塊。
我們再來看看功能模塊。
在功能模塊中,也分為基礎(chǔ)功能模塊和其他功能模塊。
基礎(chǔ)功能模塊,其重要程度低于核心基礎(chǔ)模塊,但是又高于其他功能模塊。隨著時代的發(fā)展,需求的變動,一個功能模塊可能會升級為基礎(chǔ)功能模塊,也有可能降級為其他功能模塊。同理,一個其他功能模塊也有可能變?yōu)榛A(chǔ)功能模塊。
就像幾十年前,家家戶戶通上電是一個追求的目標(biāo),網(wǎng)絡(luò)也只是家庭才有的配置。而現(xiàn)在,每家每戶都有電,并且網(wǎng)絡(luò)已經(jīng)成為了標(biāo)配。
在當(dāng)前版本,基礎(chǔ)功能模塊包含了如下模塊:
QtMultimedia:一個多媒體模塊,提供對音頻、視頻、無線電廣播和相機(jī)功能的支持;
QtMultimediaWidgets:一個用于實現(xiàn)多媒體功能的控件模塊,提供了設(shè)計視頻和攝像頭額外的控件支持,其擴(kuò)展了QtMultimedia和QtWidget模塊的功能;
上述兩個功能模塊都是用來實現(xiàn)多媒體功能的。
QtNetwork:一個用于實現(xiàn)網(wǎng)絡(luò)編程的模塊,使得在Qt圖形界面中進(jìn)行網(wǎng)絡(luò)編程變得更加方便;
QtSQL:一個用于在Qt中使用SQL對數(shù)據(jù)庫進(jìn)行操作的模塊;
QtTest:一個用于對Qt圖形界面程序進(jìn)行單元測試的模塊;
上面我們說過,基礎(chǔ)功能模塊和其他功能模塊就像電和網(wǎng)絡(luò)一樣,在不同的時期的重要性會有不同的變化。
無論其變化幾何,這些模塊終究是為了擴(kuò)展圖形界面程序的功能而生。下面我們來看看PyQt5中的部分其他功能模塊:
QtNfc:這個模塊提供了對近場通信(NFC)硬件進(jìn)行訪問的支持;
QtWebEngine:這個模塊借助開源的Chromium瀏覽器項目,在圖形界面應(yīng)用程序中嵌入Web瀏覽功能;
QtWebSocket:這個模塊為圖形界面程序提供了WebSocket通信的功能;
QtSvg:這個模塊提供了用于顯示SVG文件內(nèi)容的相關(guān)功能;
對功能模塊的細(xì)分并不需要特別嚴(yán)謹(jǐn),因為從某種程度而言,除了核心模塊之外的模塊都屬于功能模塊。核心模塊用于打好圖形界面程序的基礎(chǔ),功能模塊無論是基礎(chǔ)功能還是其他功能,都是用于實現(xiàn)圖形界面程序的功能,一個定義為其他功能模塊的模塊在自己的圖形界面編程過程中的使用頻率和重要程度都高于一個基礎(chǔ)功能模塊。所以大家靈活運用即可。
Qt的工具模塊主要是為了方便開發(fā)人員對圖形界面程序進(jìn)行設(shè)計和開發(fā),其提供了Qt設(shè)計師(QtDesigner)這個圖形化的程序設(shè)計工具,能夠便捷地利用鼠標(biāo)拖拽來快速繪制程序的界面和基礎(chǔ)的事件響應(yīng)。
為了便于大家對PyQt5各個模塊代碼的理解,本系列教程將不使用Qt設(shè)計師來設(shè)計和繪制圖形界面,有需要的讀者可以自行下載安裝使用QT設(shè)計師。
關(guān)于怎樣理解Qt For Python的模塊結(jié)構(gòu)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。