PyQt5_主要的類庫


1.PyQt5包括的主要模塊如下。

  • 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還在,而新模塊更耗內存,具體使用哪個由讀者自己決定。

    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中重要的類及其繼承關系。
    A-2
    A-4
    A-6
    上面的類圖是使用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的應用程序是事件驅動的,比如鍵盤事件、鼠標事件等。在沒有任何事件的情況下,應用程序處於睡眠狀態。主循環控制應用程序什么時候進入睡眠狀態,什么時候被喚醒。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM