一、QT與PyQT的概念和特點
1.1、QT
????????QT是一個1991年由The Qt Company開發的跨平臺C++圖形用戶界面應用程序開發 框架,可構建高性能的桌面、移動及Web應用程序。也可用于開發非GUI程序,比如 控制臺工具和服務器。Qt是面向對象的框架,使用特殊的代碼生成擴展(稱為元對象 編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴展,并且允許真正 的組件編程。2008年Qt Company科技被諾基亞公司收購,隨后4年里,因各種原因 最終導致于2012年,被Digia公司收購。
?????????平臺支持:QT支持多個操作系統,包括Windows、macOS、Linux、Android和 iOS等,使開發人員能夠輕松地開發一次代碼,然后在不同平臺上部署和運行應 用程序。
????????GUI開發:QT提供了一套強大的GUI庫,可以快速創建現代化的用戶界面。它包 括豐富的UI控件、布局管理器、繪圖和圖像處理工具,使開發人員能夠創建各種 各樣的用戶界面。
????????信號與槽機制:QT引入了一種名為"信號與槽"的機制,用于處理對象之間的通信 和事件處理。這種機制使開發人員能夠輕松地實現應用程序的事件響應和數據傳 遞。
????????數據庫訪問:QT提供了對多種數據庫的支持,包括MySQL、SQLite、Oracle和 Microsoft SQL Server等。它提供了一套完整的API,使開發人員能夠方便地連 接、查詢和操作數據庫。
????????網絡編程:QT提供了網絡編程的支持,包括TCP/IP和UDP通信、HTTP請求和響 應、FTP傳輸等。它使開發人員能夠構建具有網絡功能的應用程序,如客戶端-服 務器應用程序和網絡通信工具。
????????多媒體功能:QT具有豐富的多媒體功能,包括音頻和視頻播放、圖像處理和操 作、攝像頭和音頻設備訪問等。它提供了一套簡單易用的API,使開發人員能夠 輕松地集成多媒體功能到應用程序中。
????????總之,QT是一個功能強大的C++應用程序開發框架,具有跨平臺支持、GUI開 發、信號與槽機制、數據庫訪問、網絡編程和多媒體功能等特點。它被廣泛應用 于各種領域的應用程序開發,包括桌面軟件、移動應用、嵌入式系統和圖形化界 面工具等。
1.2、PyQT?
????????PyQt 是一個用于創建桌面應用程序的 Python 框架,它是基于 Qt 庫的 Python 綁 定。用于開發圖形用戶界面、網絡應用、數據庫驅動和其他各種應用程序。PyQt 提 供了對 Qt 庫的 Python 封裝,使得開發者可以使用 Python 編程語言來利用 Qt 的強 大功能。
1.2.1、pyqt5
????????PyQt5 是 Riverbank Computing 開發的 GUI 小部件工具包的最新版本。它是 Qt 的 Python 接口,是最強大和流行的跨平臺 GUI 庫之一。
????????PyQt5 是 Python 編程語言和 Qt 庫的混合體。 所以說PyQt5就是Python的圖 形界面開發庫。 程序的用戶交互界面,稱為UI(User interface)。通過使用PyQt5庫,我們可 以快速制作自己的小工具。
pyqt5優勢:?
1.文檔齊全:PyQt是對Qt庫的一個綁定,且保持了Qt庫原有的API,因此PyQt除了可 以使用自己的文檔,也幾乎可以通用Qt的文檔。
2.穩定性高:PyQt使用C++開發,底層使用Qt庫,因此比純Python的GUI庫更加穩定 可靠。PyQt支持跨平臺開發,而且保持著和Qt庫的同步更新,因此在不同的操作系統和 Python版本下都有良好的兼容性。
3.生態支持:PyQt擁有一個活躍的社區和豐富的第三方庫支持,可以方便地實現各種功 能,如數據庫操作、圖形繪制、圖像處理等。另外,PyQt作者也開發了一些擴展包,如 PyQtChart、PyQtDataVisualization等,使得繪制圖表和數據可視化變得更加容易。
4.開源免費:PyQt5采用雙開源協議,第一種采用GPL(GNU General Public License)協議,開發人員可以免費使用PyQt5(但你的應用也必須遵循GPL協議即源代碼 公開),第二種商業許可證,如果你不想公開你的源碼,或者不希望遵守GPL協議,那么你 可以購買PyQt5的商業許可證,即可不公開程序源碼。這使得PyQt在開源界和商業界都有 廣泛的應用和支持。?
應用:?
1.游戲開發,雖然 PyQT5 主要用于創建用戶界面,但它也可以用于游戲開發,尤其是 那些注重故事敘述和角色交互的圖形冒險游戲。
2.自動化和控制系統,PyQT5 可以用于創建監控和控制系統,它提供了對信號和槽機制 的支持,這有助于實現復雜的事件處理邏輯。
3.桌面應用程序,它提供了豐富的控件和組件,以及強大的布局管理器,使得開發者可 以輕松地創建具有復雜界面的應用程序。
4.嵌入式開發,PyQT5 可以用于創建定制的硬件設備上的應用程序。?
1.2.2、 pyqt6
????????PyQt6 是一個功能強大的 Python 庫,用于創建跨平臺的圖形用戶界面應用程序。它是 Qt 應用程序框架的 Python 綁定,Qt 是一個廣泛使用的 C++ 庫。
PyQt6: 綁定到 Qt 6.x 系列。Qt 6 是對 Qt 5 的重大更新,包含許多功能增強和重構。
在 PyQt6 中,許多類和方法的名稱和參數進行了更改,有些過時或不再支持。
PyQt6 進行了模塊化改進,有些模塊被拆分或重命名。例如,
QtWidgets
、QtGui
?和?QtCore
?模塊在 PyQt6 中的使用方式有所調整,某些類可能需要從不同的模塊導入。PyQt6 使用 Python 的原生類型,而 PyQt5 除了提供信號與槽的傳統方式外,還允許使用老式的字符串形式來定義信號和槽。
PyQt6 在類型提示方面更為嚴格,鼓勵類型注釋。這有助于開發人員在使用 IDE 時獲得更好的補全和錯誤提示。
Qt 6 在渲染和性能方面做了一些改進,支持更現代的圖形技術(如 Vulkan),使得圖形和動畫的展示更加流暢。
Qt 6 引入了許多新的功能,例如對 3D 圖形的增強支持、改進的多媒體處理、對高 DPI 顯示器的更好支持等,這些特性在 PyQt6 中也得到了體現。
????????由于 API 的更改,PyQt5 和 PyQt6 之間的代碼不一定可以互換。如果你正在開發新項目,建議使用 PyQt6,因為它將提供最新的功能和更好的支持。
二、PySide與PyQt的區別
2.1、 什么是Pyside
????????PySide,最初是由是由Nokia公司開發,現在由 Qt 公司維護,它是 Qt 框架的另一 個 Python 綁定。PySide2 是針對 Qt 5 的版本,而 PySide6 是針對最新 Qt 6 版本的 Python 綁定。PySide是跨平臺的圖形使用界面框架Qt的Python版本。提供和PyQt 類似的功能,并兼容API。但與PyQt不同處為使用LGPL許可。他是一個專門用于創建 GUI的庫,可以在Python中使用,也可以在不同的操作系統上使用 (linux&windows)。此外大多數的DCC軟件都使用它,比如Maya、houdini和 Blender等。Pyside基于QT的C++框架。
2.2、Pyside與PyQt的區別
2.2.1、許可協議
????????PyQt5 提供了兩種許可選項:GPL 和商業許可。使用 GPL 許可證時,你的應用 程序必須開源;如果選擇商業許可,則需要付費。
????????PySide采用LGPL(GNU Lesser General Public License)開源協議,LGPL是一 個較為寬松的開源協議,與 GPL 相比,它允許商業軟件在不公開源代碼的情況下 使用 LGPL 許可的庫。這意味著你可以使用 PySide 來開發商業應用程序,而不 必開源你的整個應用程序,只需確保對 PySide 本身所做的任何修改是開源的。
2.2.2、開發和維護
PySide 由 The Qt Company 維護,它是 Qt 框架的官方 Python 綁定。
PyQt5 由 Riverbank Computing 維護,它是一個第三方解決方案。
2.2.3、API 兼容性
????????PySide 和 PyQt5的 API 非常相似,但并不完全相同。在某些情況下,類名、方法 名或參數可能會有所不同。因此,從一個庫遷移到另一個庫可能需要一些代碼修 改。
2.2.4、性能
????????在性能方面,PySide 和 PyQt5 通常非常相似,因為它們都依賴于相同的 Qt 庫。 但是,具體性能可能會因實現細節和優化而有所不同。
三、PyQT的安裝
pip install PyQt5==5.15.2 ?-i https://pypi.tuna.tsinghua.edu.cn/simple?
四、PyQT工具的導入配置
4.1、?PyQT工具
????????PyQt Tools 是 PyQt 框架提供的一組工具,主要用于輔助 PyQt 應用程序的開發和設計?
pip install PyQt5-tools==5.15.9.3.3??-i https://pypi.tuna.tsinghua.edu.cn/simple?
PyQt Tools 中常見的工具:?
?1. Qt Designer: 這是一個可視化的用戶界面設計器,允許開發者通過拖放方式設 計和布局應用程序的界面。設計好的界面可以保存為.ui 文件,然后可以使用 pyuic 工具將其轉換為相應的 Python 代碼,以便在 PyQt 應用程序中使用。
2. PyUIC: 這是一個用于將 Qt Designer 設計的 .ui 文件轉換為對應的 Python 代 碼的命令行工具。通過這個工具,可以將可視化設計的用戶界面集成到 PyQt 項 目中。
3. PyRCC: 用于將 Qt 資源文件 (.qrc) 編譯成 Python 模塊的工具。Qt 資源文件可 以包含圖像、文本文件等,通過編譯可以將這些資源文件嵌入到 PyQt 應用程序 中,方便統一管理。
4. Pylupdate: 用于更新 Qt 項目的翻譯文件 (.ts)。這在多語言支持的應用程序中 很有用,可以提供不同語言的界面翻譯。
4.2、PyQT工具在Pycharm中配置?
在 PyCharm 中導入 PyQt 工具通常是通過設置外部工具(External Tools)來完成 的。?
1. 打開 PyCharm: 打開你的 PyCharm IDE。
2. 進入設置(Settings): 在頂部菜單欄中,選擇 "File" -> "Settings"(在 macOS 上是 "PyCharm" -> "Preferences")。
3. 選擇 External Tools: 在設置窗口左側的導航欄中,展開 "Tools" 節點,并選擇 "External Tools"。
4. 添加外部工具: 在右側窗格中,點擊 "+"(添加)按鈕,然后選擇 "Program"。
5. 填寫外部工具信息: 在彈出的對話框中,填寫以下信息:
????????Name(名稱): 工具的名稱,例如 "pyuic" 或 "Qt Designer"。
????????Group(組): 可選,可以將工具分組,這樣可以更好地組織工具列表。
????????Description(描述): 工具的描述,用于說明工具的作用。
????????Program(程序): 工具的可執行文件路徑。例如,對于 pyuic,你需要指定 它的完整路徑,通常是在虛擬環境中的 Scripts(Windows)或 bin (Linux/Mac)目錄中。
????????Arguments(參數): 傳遞給工具的參數。對于 pyuic,這可能是一些選項和 輸入文件的路徑。
????????Working Directory(工作目錄): 工具運行時的工作目錄,通常可以設置為 你的項目根目錄。?
Qt Designer,圖形化布局工具:?
D:\Anaconda3\envs\over_project\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
????????????????????????????????????????????????????????????????????????????????(程序路徑:填寫自己的該程序的位置)
$FileDir$ (當前文件夾)
$ProjectFileDir$ (絕對路徑)
?
PyUIC,圖形界面轉py:?
D:\Anaconda3\envs\over_project\Scripts\pyuic5.exe
????????????????????????????????????????????????????????????????????????????????(程序路徑:填寫自己的該程序的位置)
$FileName$ -o $FileNameWithoutExtension$.py (當前文件轉為.py文件)
$FileDir$?
?
Pyrcc ,資源轉py:?
D:\Anaconda3\envs\over_project\Scripts\pyrcc5.exe
????????????????????????????????????????????????????????????????????????????????(程序路徑:填寫自己的該程序的位置)
$FileName$ -o $FileNameWithoutExtension$_rc.py (當前文件轉為.py文 件)?
$FileDir$?
?
五、第一個pyqt程序界面
import sys
from PyQt5.QtWidgets import QApplication,QWidgetif __name__ == '__main__':app = QApplication(sys.argv) # 創建QApplication對象,接受命令行參數windows = QWidget() # 創建一個QWidget窗口對象windows.setWindowTitle('第一個PyQt程序') # 設置窗口標題為'第一個PyQt程序'windows.show() # 顯示窗口app.exec() # 啟動應用程序事件循環