1.PyQt5包括的主要模塊以下。python
- QtCore模塊——涵蓋了包的核心的非GUI功能,此模塊被用於處理程序中涉及的時間、文件、目錄、數據類型、文本流、連接、QMimeData、線程或進程等對象。
- QtGui模塊——涵蓋了多種基本圖形功能的類,包括但不限於:窗口集、事件處理、2D圖形、基本的圖像和界面、字體和文本類。
- QtWidgets模塊——包含了一整套UI元素控件,用於創建符合系統風格的Classic界面,很是方便,能夠在安裝時選擇是否使用此功能。
- QtMultimedia模塊——包含了一套類庫,用於處理多媒體事件,經過調用API接口訪問攝像頭、語音設備、收發消息(Radio Functionality)等。
- QtBluetooth模塊——包含了處理藍牙活動的類庫,其功能包括:掃描設備、鏈接、交互等行爲。
- QtNetwork模塊——包含了用於進行網絡編程的類庫,經過提供便捷的TCP/IP及UDP的C/S代碼集合,使得基於Qt的網絡編程更容易。
- QtPositioning模塊——用於獲取位置信息,此模塊容許使用多種方式實現定位,包括但不限於:衛星、無線網、文字信息。此模塊通常用在網絡地圖定位系統中。
- Enginio模塊——用於構建客戶端的應用程序庫,在運行時訪問Qt Cloud 服務器託管的應用程序。
QtWebSockets模塊——包含了一組類程序,用於實現WebSocket協議。
QtWebKit模塊——包含了用於實現基於WebKit2的網絡瀏覽器的類庫。
- QtWebKitWidgets模塊——提供了一組類庫,用於實現一種由Widgets包構建的、基於WebKit1的網絡瀏覽器。
- QtXml模塊——包含了用於處理XML的類庫,此模塊爲SAX和DOM API 的實現提供了函數。
- QtSvg模塊——經過一組類庫,爲顯示矢量圖形文件的內容提供了函數。
- QtSql模塊——提供了數據庫對象的接口以供使用。
- QtTest模塊——包含了經過單元測試,調試PyQt5應用程序的功能。
- QtHelp模塊——包含了用於建立和查看可查找的文檔的類。
- QtOpenGL模塊——使用OpenGL庫來渲染3D和2D圖形。該模塊使得Qt GUI庫和OpenGL庫無縫集成。
- QtXmlPatterns模塊——所包含的類實現了對XML和自定義數據模型的Xquery與XPath的支持。
- QtDesigner模塊——所包含的類容許使用PyQt擴展Qt Designer。
- Qt模塊——將上面模塊中的類綜合到一個單一的模塊中。這樣作的好處是你不用擔憂哪一個模塊包含了哪一個特定的類;壞處是加載到整個Qt框架中,從而增長了應用程序的內存佔用。
-
uic模塊——所包含的類用來處理.ui文件,該文件由Qt Designer建立,用於描述整個或者部分用戶界面。它能夠將.ui文件編譯爲.py文件,以便其餘Python程序調用。
PyQt5增長了不少模塊,能夠去官方網站查看,基本上看模塊名字就知道大概用處了。PyQt5已經沒有phonon模塊了,使用QtMultimedia來處理媒體。
另外,PyQt5新增的QtWebEngineWidgets模塊替代了過期的QtWebKit,可是QtWebKit還在,而新模塊更耗內存,具體使用哪一個由讀者本身決定。shell
2 .PyQt 5主要類介紹
PyQt5 API擁有620多個類和6000個函數。它是一個跨平臺的工具包,能夠運行在全部主流的操做系統上,包括Windows、Linux和Mac OS。
- QObject類:在類層次結構中是頂部類(Top Class),它是全部PyQt對象的基類。
- QPaintDevice類:全部可繪製的對象的基類。
- QApplication類:用於管理圖形用戶界面應用程序的控制流和主要設置。它包含主事件循環,對來自窗口系統和其餘資源的全部事件進行處理和調度;它也對應用程序的初始化和結束進行處理,而且提供對話管理;還對絕大多數系統範圍和應用程序範圍的設置進行處理。
- QWidget類:全部用戶界面對象的基類。QDialog類和QFrame類繼承自QWidget類,這兩個類有本身的子類系統(Sub-Class System)。
- QFrame類:有框架的窗口控件的基類。它也被用來直接建立沒有任何內容的簡單框架,可是一般要用到QHBox或QVBox,由於它們能夠自動佈置放到框架中的窗口控件。
- QMainWindow類:提供一個有菜單欄、錨接窗口(如工具欄)和狀態欄的主應用程序窗口。
-
QDialog類:最普通的頂級窗口。若是一個窗口控件沒有被嵌入到父窗口控件中,那麼該窗口控件就被稱爲頂級窗口控件。在一般狀況下,頂級窗口控件是有框架和標題欄的窗口。在Qt中,QMainWindow和不一樣的QDialog的子類是最普通的頂級窗口。
圖A-2至圖A-6展現了PyQt 5中重要的類及其繼承關係。
上面的類圖是使用UML建模工具Edraw UML Diagram繪製的。好比在圖A-2所示的類圖中,每個方框表明一個PyQt 5的類,在方框的第一行顯示的是類名,方框之間經過符號表示類與類之間的繼承關係。繼承指的是一個類(稱爲子類)繼承另外一個類(稱爲父類)的功能,經過繼承能夠增長子類的新功能。
下面是經常使用的控件。數據庫
- QLabel控件:用來顯示文本或圖像。
- QLineEdit窗口控件:提供了一個單頁面的單行文本編輯器。
- QTextEdit窗口控件:提供了一個單頁面的多行文本編輯器。
- QPushButton窗口控件:提供了一個命令按鈕。
- QRadioButton控件:提供了一個單選鈕和一個文本或像素映射標籤。
- QCheckBox窗口控件:提供了一個帶文本標籤的複選框。
- QspinBox控件:容許用戶選擇一個值,要麼經過按向上/向下鍵增長/減小當前顯示值,要麼直接將值輸入到輸入框中。
- QScrollBar窗口控件:提供了一個水平的或垂直的滾動條。
- QSlider控件:提供了一個垂直的或水平的滑動條。
- QComboBox控件:一個組合按鈕,用於彈出列表。
- QMenuBar控件:提供了一個橫向菜單欄。
- QStatusBar控件:提供了一個適合呈現狀態信息的水平條,一般放在QMainWindow的底部。
- QToolBar控件:提供了一個工具欄,能夠包含多個命令按鈕,一般放在QMainWindow的頂部。
- QListView控件:能夠顯示和控制可選的多選列表,能夠設置ListMode或IconMode。
- QPixmap控件:能夠在繪圖設備上顯示圖像,一般放在QLabel或QPushButton類中。
-
Qdialog控件:對話框窗口的基類。
QWidget是全部用戶界面類的基類,它能接收全部的鼠標、鍵盤和其餘系統窗口事件。沒有被嵌入到父窗口中的Widget會被看成一個窗口來調用,固然,它也可使用setWindowFlags(Qt.WindowFlags)函數來設置窗口的顯示效果。QWidget的構造函數能夠接收兩個參數,其中第一個參數是該窗口的父窗口;第二個參數是該窗口的Flag,也就是Qt.WindowFlags。根據父窗口來決定Widget是嵌入到父窗口中仍是被看成一個獨立的窗口來調用,根據Flag來設置Widget窗口的一些屬性。
QMainWindow(主窗口)通常是應用程序的框架,在主窗口中能夠添加所須要的Widget,好比添加菜單欄、工具欄、狀態欄等。主窗口一般用於提供一個大的中央窗口控件(如文本編輯或者繪製畫布)以及周圍的菜單欄、工具欄和狀態欄。QMainWindow經常被繼承,這使得封裝中央控件、菜單欄,工具欄以及窗口狀態變得更容易,也可使用Qt Designer來建立主窗口。編程
3. QApplication類
QApplication類用於管理圖形用戶界面應用程序的控制流和主要設置,能夠說QApplication是PyQt的整個後臺管理的命脈。任何一個使用PyQt開發的圖形用戶界面應用程序,都存在一個QApplication對象。
在PyQt中,能夠經過以下代碼載入必需的模塊,得到QApplication類。
from PyQt5.QtWidgets import QApplication
在PyQt的應用程序實例中包含了QApplication類的初始化,一般放在Python腳本的if name == "main": 語句後面,相似於放在C的main函數裏,做爲主程序的入口。由於QApplication對象作了不少初始化,因此它必須在建立窗口以前被建立。
QApplication類還能夠處理命令行參數,在QApplication類初始化時,須要引入參數sys.argv。sys.argv是來自命令行的參數列表,Python腳本能夠從shell運行,好比用鼠標雙擊qtSample.py,就啓動了一個PyQt應用程序。引入sys.argv後就能讓程序從命令行啓動,好比在命令行中輸入 python qtSample.py,也能夠達到一樣的效果。
QApplication類的初始化能夠參考如下腳本引用。應用程序總體框架爲:
if name == "main":
app = QApplication(sys.argv)
# 界面生成代碼 ...瀏覽器
sys.exit(app.exec_())
sys.exit()函數能夠結束一個應用程序,使應用程序在主循環中退出。
QApplication採用事件循環機制,當QApplication初始化後,就進入應用程序的主循環(Main Loop),開始進行事件處理,主循環從窗口系統接收事件,並將這些事件分配到應用程序的控件中。當調用sys.exit()函數時,主循環就會結束。
PyQt 5的應用程序是事件驅動的,好比鍵盤事件、鼠標事件等。在沒有任何事件的狀況下,應用程序處於睡眠狀態。主循環控制應用程序何時進入睡眠狀態,何時被喚醒。服務器