PyQt 是Python語言下最流行,使用最為廣泛的Qt綁定, Qt則是C++語言離最流行的GUI編程框架。
那什么是Qt的Python綁定呢?意思就是原生的Qt是C++寫的,沒法再Python里之間使用,所以PyQt使用Python實現了Qt同樣的接口類庫,這個類庫底層調用了Qt的庫。接口的用法上保證跟源生Qt(類、方法、屬性、參數、返回值)保持一致。
這樣以來如果寫過C++的Qt的,只有稍微熟悉Python 語法基礎就能寫PyQt程序,反之亦然, 甚至寫Golang 下的Qt GUI 程序也能很快上手類Qt的GUI程序。
Qt 歷史
- 1991年 Haavard Nord和Eirik Chambe-Eng開始開發將會支持X11和Windows的Qt
- 1994年 創立公司,早名為Quasar Technologies,然后更名為Troll Tech,然后在改為Trolltech,中文名是“奇趣科技”
- 2008年 被NOKIA公司收購,以增強該公司在跨平台軟件研發方面的實力,更名Qt Software。
- 2012年 Qt被Digia從NOKIA收購
- 2014年 跨平台集成開發環境Qt Creator 3.1.0正式發布,實現了對於iOS的完全支持,新增WinRT、Beautifier等插件
- 2014年 Digia公司Qt開發團隊宣布Qt 5.3正式版發布
使用Qt開發的著名軟件
Adobe Photoshop Album
一個圖像組織應用程序 [35]Autodesk Maya
3D建模和動畫軟件Battle.net
暴雪公司開發的游戲對戰平台CineFX
一款跨平台、開源、免費、影片剪輯,特效與合成套裝FreeCAD
a free and open source 3D-Solid and general purpose design CAD/CAEGoogle地球(Google Earth)
三維虛擬地圖軟件。PDFedit
自由的PDF編輯器Opera
著名的網頁瀏覽器。Qt Creator
the free software cross-platform integrated development environment from NokiaSkype
一個使用人數眾多的基於P2P的VOIP聊天軟件。SMPlayer
跨平台多媒體播放器VirtualBox
虛擬機軟件。VLC多媒體播放器
一個體積小巧、功能強大的開源媒體播放器。咪咕音樂
咪咕音樂是中國移動傾力打造的正版音樂播放器WPS Office
金山軟件公司推出的辦公軟件極品飛車
EA公司出品的著名賽車類游戲
PyQt
PyQt是Qt公司 Qt應用程序框架的一組Python v2和v3綁定,可 在Qt支持的所有平台上運行,包括Windows,OS X,Linux,iOS和Android。PyQt5支持Qt v5。PyQt4支持Qt v4,並將針對Qt v5進行構建。綁定是作為一組Python模塊實現的,包含1000多個類。PyQt不包含Qt的副本。您必須自己獲得Qt的正確許可副本。但是,提供了PyQt5的GPL版本的二進制車輪,這些二進制車輪包括Qt的LGPL版本的副本。
為什么選擇PyQt?
PyQt匯集了Qt C ++跨平台應用程序框架和跨平台解釋語言Pytho庫。
Qt不僅僅是一個GUI工具包。它包括網絡套接字,線程,Unicode,正則表達式,SQL數據庫,SVG,OpenGL,XML,功能齊全的Web瀏覽器,幫助系統,多媒體框架以及豐富的GUI小部件的抽象。
Qt類采用信號/槽機制在對象之間進行通信,這種機制類型安全但耦合松散,因此易於創建可重復使用的軟件組件。
Qt還包括圖形用戶界面設計器Qt Designer。PyQt能夠從Qt Designer生成Python代碼。也可以將用Python編寫的新GUI控件添加到Qt Designer。
Python是一種簡單但功能強大的面向對象的語言。它的簡單性使其易於學習,但其強大功能意味着可以創建大型而復雜的應用程序。它的解釋性質意味着Python程序員非常有生產力,因為沒有編輯/編譯/鏈接/運行開發周期。
Python的強大功能來自其全面的擴展模塊集,這些擴展模塊提供了多種功能,包括HTTP服務器,XML解析器,數據庫訪問,數據壓縮工具,當然還有圖形用戶界面。擴展模塊通常以Python,C或C ++實現。使用諸如SIP之類的工具來創建封裝現有C或C ++庫的擴展模塊是相對簡單的。這樣,Python便可以成為從已建立的庫創建新應用程序的粘合劑。
PyQt結合了Qt和Python的所有優點。程序員擁有Qt的全部功能,但是可以通過Python的簡單性來利用它。
PyQt5組件
PyQt5包含許多不同的組件。首先,有許多Python擴展模塊。這些都安裝在 PyQt5Python軟件包中,並在模塊列表中進行了描述 。
PyQt5作為多個源包和相應的二進制文件輪分發,每個源文件包實現一個或多個邏輯相關的擴展模塊。
PyQt5包含使Qt Designer和qmlscene能夠使用Python代碼擴展的插件。有關詳細信息,請分別參見編寫Qt Designer插件和 集成Python和QML。
pyuic5對應於Qt uic
實用程序。它將使用Qt Designer創建的基於QtWidgets的GUI 轉換 為Python代碼。
pyrcc5對應於Qt rcc
實用程序。它在Python模塊中嵌入由資源收集文件描述的任意資源(例如,圖標,圖像,翻譯文件)。
pylupdate5
對應於Qt的lupdate
效用。它從Python代碼中提取所有可翻譯的字符串,並創建或更新.ts翻譯文件。然后,Qt Linguist使用它們來管理這些字符串的翻譯。
PyQt5包含大量示例。這些是Qt提供的許多C ++示例的Python端口。它們可以在examples目錄中找到 。
PyQt 優點小結
文檔齊全
: 由於接口方法和參數及返回值一致,所以可以直接參考Qt原生的文檔,完全通用穩定性高
: 使用面向對象的設計方法,接口文檔穩定性高,使用信號/槽機制使得UI與邏輯分離生態健全
: Qt Desinger 與UIC 等系列工具已經大量的Demo能快速開發應用程序,開源免費
: 如果是開發的應用程序是也是開源發布是免費的,商業授權也不貴,退一步說可以使用Qt的親兒子PySide, 可以閉源商業發布