官术网_书友最值得收藏!

第1章 PyQt5入門

Python是一種語法簡潔、功能強大的編程語言,它的應用方向很廣,而GUI圖形用戶界面開發是Python的一個非常重要的方向,PyQt5作為一個跨平臺、簡單易用、高效的GUI框架,是使用Python開發GUI程序時最常用的一種技術。本章將對Python與PyQt5進行介紹。

1.1 Python語言介紹

1.1.1 了解Python

Python,本義是“蟒蛇”。1989年,荷蘭人Guido van Rossum發明了一種面向對象的解釋型高級編程語言,將其命名為Python,標志如圖1.1所示。Python的設計哲學為優雅、明確、簡單,實際上,Python始終貫徹著這一理念,以至于現在網絡上流傳著“人生苦短,我用Python”的說法。由此可見,Python有著簡單、開發速度快、節省時間和容易學習等特點。

圖1.1 Python的標志

Python是一種擴充性強大的編程語言,它具有豐富和強大的庫,能夠把使用其他語言(尤其是C/C++)制作的各種模塊很輕松地聯結在一起,所以Python常被稱為“膠水”語言。

1991年,Python的第一個公開發行版問世。從2004年開始,Python的使用率呈線性增長,逐漸受到編程者的歡迎和喜愛。最近幾年,伴隨著大數據和人工智能的發展,Python語言越來越火爆,也越來越受到開發者的青睞,如圖1.2所示是截至2020年3月的最新一期TIBOE編程語言排行榜,Python排在第3位。

圖1.2 2020年3月TIBOE編程語言排行榜

1.1.2 Python的版本

Python自發布以來,主要有3個版本:1994年發布的Python 1.x版本(已過時)、2000年發布的Python 2.x版本(2020年3月已經更新到Python 2.7.17)和2008年發布的3.x版本(2020年6月已經更新到Python 3.8.3)。

1.1.3 Python的應用領域

Python作為一種功能強大的編程語言,因其簡單易學而受到很多開發者的青睞。那么Python的應用領域有哪些呢?概括起來主要有以下幾個方面。

 Web開發

 大數據處理

 人工智能

 自動化運維開發

 云計算

 爬蟲

 游戲開發

例如,我們經常訪問的集電影、讀書、音樂于一體的創新型社區豆瓣網、國內著名網絡問答社區知乎、國際上知名的游戲Sid Meier's Civilization(文明)等都是使用Python開發的。這些網站和應用的效果如圖1.3~圖1.5所示。

圖1.3 豆瓣網首頁

圖1.4 知乎

很多的知名企業都將Python作為其項目開發的主要語言,比如世界上最大的搜索引擎Google公司、專注編程教育二十年的明日科技、世界最大的短視頻網站YouTube和覆蓋范圍最廣的社交網站Facebook等,如圖1.6所示。

圖1.5 Sid Meier's Civilization(文明)游戲

圖1.6 應用Python的公司

說明

Python語言不僅可以應用到網絡編程、游戲開發等領域,還在圖形圖像處理、智能機器人、爬取數據、自動化運維等多方面嶄露頭角,為開發者提供簡約、優雅的編程體驗。

1.2 GUI與PyQt5

Python是一門腳本語言,它本身并不具備GUI開發功能,但是由于它強大的可擴展性,現在已經有很多種GUI模塊庫可以在Python中使用,而這其中,PyQt5無疑是最強大、開發效率最高的一種,本節將對GUI及PyQt5進行介紹。

1.2.1 GUI簡介

GUI,又稱圖形用戶接口或者圖形用戶界面,它是Graphical User Interface的簡稱,表示采用圖形方式顯示的計算機操作用戶界面。

GUI是一種人與計算機通信的界面顯示格式,允許用戶使用鼠標等輸入設備對計算機進行操作。比如Windows操作系統就是一種最常見的GUI程序,另外,我們平時使用的QQ、處理表格用的Excel、處理圖片用的美圖秀秀、觀看視頻時使用的優酷等,都是GUI程序,如圖1.7~圖1.10所示。

圖1.7 QQ軟件

圖1.8 Office辦公軟件之Excel

圖1.9 美圖秀秀軟件

圖1.10 優酷視頻播放軟件

1.2.2 什么是PyQt5

PyQt是基于Digia公司強大的圖形程序框架Qt的Python接口,由一組Python模塊構成,它是一個創建GUI應用程序的工具包,由Phil Thompson開發。

自從1998年首次將Qt移植到Python上形成PyQt以來,已經發布了PyQt3、PyQt4和PyQt5等3個主要版本,目前的最新版本是PyQt 5.14。PyQt5的主要特點如下:

 對Qt庫進行完全封裝。

 使用信號/槽機制進行通信。

 提供了一整套進行GUI程序開發的窗口控件。

 本身擁有超過620個類和近6000個函數及方法。

 可以跨平臺運行在所有主要操作系統上,包括UNIX、Windows和Ma cOS等。

 支持使用Qt的可視化設計器進行圖形界面設計,并能夠自動生成Python代碼。

說明

(1)PyQt5不向下兼容PyQt4,而且官方默認只提供對Python 3.x的支持,如果在Python 2.x上使用PyQt5,需要自行編譯,因此建議使用Python 3.x+PyQt5開發GUI程序。

(2)PyQt5采用雙許可協議,即GPL和商業許可,自由開發者可以選擇使用免費的GPL協議版本,而如果準備將PyQt5用于商業,則必須為此交付商業許可費用。

技巧

GPL協議是GNU General Public License的縮寫,它是GNU通用公共授權非正式的中文翻譯。使用GPL協議,表示軟件版權屬于開發者本人,軟件產品受國際相關版權法的保護,允許其他用戶對原作者的軟件進行復制或發行,并且可以在更改之后發行自己的軟件,但新軟件在發布時也必須遵守GPL協議,不可以對其進行其他附加限制。這里需要說明的一點是,使用GPL協議的軟件,不能申請軟件產品專利,也就不存在“盜版”的說法。

1.2.3 PyQt5與Qt的關系

Qt(中國區官網:https://www.qt.io/cn)是1991年由挪威的Trolltech公司(奇趣科技)開發的一個基于C++的跨平臺GUI庫,它包括跨平臺類庫、集成開發工具和跨平臺的IDE。

2008年6月,奇趣科技公司被諾基亞公司收購,Qt成為諾基亞旗下的編程語言工具,從2009年5月發布的Qt 4.5版本開始,諾基亞公司內部Qt源代碼庫開源。

2011年,芬蘭的一家IT業務供應商Digia從諾基亞公司手中收購了Qt的商業版權,而到2012年8月,Digia又從諾基亞公司手中全面收購了Qt的軟件業務,并于2013年7月3日正式發布Qt 5.1版本,截至2020年3月,Qt的最新版本為5.14。

Qt的發展歷程如圖1.11所示。

而PyQt(官網:https://www.riverbankcomputing.com/)則是將Python與Qt融為一體,也就是說,PyQt允許使用Python語言調用Qt庫中的API,這樣做的最大好處就是在保留了Qt高運行效率的同時,大大提高了開發效率。因為,相對于C++語言來說,Python語言的代碼量、開發效率都要更高,而且其語法簡單、易學。PyQt對Qt做了完整的封裝,幾乎可以用PyQt做Qt能做的任何事情。

由于目前最新的PyQt版本是5.14,所以習慣上稱PyQt為PyQt5。

圖1.11 Qt發展歷程

綜上所述,PyQt就是使用Python對Qt進行了封裝,而PyQt5則是PyQt的一個版本,它們的關系如圖1.12所示。

圖1.12 PyQt5與Qt的關系

1.2.4 PyQt5的主要模塊

PyQt5中有超過620個類,它們被分布到多個模塊,每個模塊側重不同的功能。如圖1.13所示為PyQt5模塊中的主要類及其作用,在使用PyQt5開發GUI程序時,經常會用到這些類。

圖1.13 PyQt5模塊中的主要類及其作用

圖1.14展示了PyQt5中的主要模塊及其作用。

說明

圖1.14中標的表示常用的PyQt5模塊。

技巧

(1)圖1.14中提到QtSvg模塊主要提供了可用于顯示SVG矢量圖形文件的類,那么什么是SVG文件呢?SVG是一種可縮放的矢量圖形,它的英文全稱為Scalable Vector Graphics,是一種用于描述二維圖形和圖形應用程序的XML語言。SVG圖像非常適合于設計高分辨率的Web圖形頁面,用戶可以直接用代碼來描繪圖像,也可以用任何文字處理工具打開SVG圖像,而且可以通過改變部分代碼來使圖像具有交互功能,并能夠隨時插入HTML中通過瀏覽器來觀看。

(2)PyQt5的官方幫助地址為:https://www.riverbankcomputing.com/static/Docs/PyQt5/,這是官方提供的在線英語幫助,如果讀者有需要,可以查看。

圖1.14 PyQt5的主要模塊及作用

1.2.5 其他常用GUI開發庫

除了PyQt5之外,Python還支持很多可以開發GUI圖形界面程序的庫,如Tkinter、Flexx、wxPython、Kivy、PySide、PyGTK等,下面對它們進行簡單介紹。

1.Tkinter

Tkinter又稱“Tk接口”,是一個輕量級的跨平臺圖形用戶界面(GUI)開發工具,是Tk圖形用戶界面工具包標準的Python接口,可以運行在大多數Unix、Windows和Ma cOS系統中,而且Tkinter是安裝Python解釋器時自動安裝的組件,Python的默認IDLE就是使用Tkinter開發的。

2.Flexx

Flexx是用于創建圖形用戶界面(GUI)的純Python工具箱,該工具箱使用Web技術進行渲染。作為跨平臺的Python工具,用戶可以使用Flexx創建桌面應用程序和Web應用程序,同時可以將程序導出到獨立的HTML文檔中。

作為GitHub推薦的純Python圖形界面開發工具,它的誕生基于網絡,已經成為向用戶提供應用程序及交互式科學內容越來越流行的方法。

3.wxPython

wxPython是Python語言的一套優秀的GUI圖形庫,可以幫助開發人員輕松創建功能強大的圖形用戶界面的程序。同時wxPython作為優秀的跨平臺GUI庫wxWidgets的Python封裝,具有非常優秀的跨平臺能力,可以在不修改程序的情況下在多種平臺上運行,支持Windows、Mac OS及大多數的Unix系統。

4.Kivy

Kivy是一款用于跨平臺快速應用開發的開源框架,只需編寫一套代碼便可輕松運行于各大移動平臺和桌面上,如Android、iOS、Linux、Ma cOS和Windows等。Kivy采用Python和Cython編寫。

5.PySide

PySide是跨平臺的應用程序框架Qt的Python綁定版本,可以使用Python語言和Qt進行界面開發。2009年8月,PySide首次發布,提供和PyQt類似的功能,并兼容API。但與PyQt不同的是,它使用LGPL授權,允許進行免費的開源軟件和私有的商業軟件的開發;另外,相對于PyQt,它支持的Qt版本比較老,最高支持到Qt 4.8版本,而且官方已經停止維護該庫。

6.PyGTK

PyGTK是Python對GTK+GUI庫的一系列封裝,最經常用于GNOME平臺上,雖然也支持Windows系統,但表現不太好,所以,如果在Windows系統上開發Python的GUI程序,不建議使用該庫。

1.3 小結

本章主要對Python語言及PyQt5進行了介紹,要使用PyQt5開發程序,首先應該了解它,因此,本章首先對PyQt5程序開發的一些基本概念進行了介紹,包括GUI、Qt、PyQt5、PyQt5中的模塊等;另外,還對Python中一些常用的其他GUI框架進行了介紹。對于本章知識,讀者了解即可。

主站蜘蛛池模板: 台北县| 巴东县| 即墨市| 阳江市| 隆昌县| 南宁市| 沈丘县| 哈尔滨市| 平山县| 南岸区| 资溪县| 安泽县| 绵阳市| 榆树市| 沾化县| 阿克陶县| 焉耆| 凤山县| 涪陵区| 麻栗坡县| 垣曲县| 永春县| 织金县| 阿巴嘎旗| 吴川市| 达尔| 高碑店市| 柘城县| 甘洛县| 山东省| 田东县| 荥经县| 小金县| 临湘市| 同心县| 涿鹿县| 新闻| 宁南县| 三原县| 民乐县| 阜平县|