圖形界面編程技巧,用Python中PyQt5庫快速創建一個應用程式框架

2020-12-05 python高手養成

我們知道,Python中有很多GUI庫,這些庫在創建應用程式時都很方便,常用的GUI庫有tkinter、wxPython、PyQt、Kivy、Pyforms、pyGUI等,比較經典的庫有tkinter、wxPython、PyQt。從今天開始,和小夥伴們一起梳理一下關於PyQt創建GUI應用程式的一些知識點和方法。

一個不錯的GUI庫

PyQt簡介

Qt是1991年由Qt Company開發的一個跨平臺C++圖形用戶界面應用程式開發框架。它既可以開發GUI應用程式,也可用於開發非GUI程序,比如控制臺工具和伺服器。Qt是面向對象的框架,使用特殊的代碼生成擴展(稱為元對象編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴展,並且允許真正地組件編程。

2008年,Qt Company科技被諾基亞公司收購,Qt也因此成為諾基亞旗下的程式語言工具。

2012年,Qt被Digia收購。2014年4月,跨平臺集成開發環境Qt Creator 3.1.0正式發布,至此實現了全面支持IOS、Android、WF,它提供給應用程式開發者建立藝術級的圖形用戶界面所需的所有功能。

2019年,Qt團隊宣布最新版5.13版本發布。注意,它還在被支持。

PyQt是實現了一個Python模塊集,是一個多平臺的工具包,可以運行在所有主要作業系統上,包括UNIX,Windows和Mac,甚至是Android中。

跨平臺方面它同樣表現出眾

PyQt採用雙許可證,開發人員可以選擇GPL和商業許可。在此之前,GPL的版本只能用在Unix上,從PyQt的版本4開始,GPL許可證可用於所有支持的平臺。

PyQt模塊包含的內容

PyQt提供了哪些模塊?

豐富的模塊

PyQt實現了超過300個類庫,包含了將近6000多個函數和方法。可謂是博大精深,這個庫不僅提供了圖形界面的開發,還提供了諸如多線程、網絡、資料庫、圖形渲染等諸多常用功能。比較常用的接口如下:

QtCore模塊包含核心的非GUI功能。該模塊用於時間、文件和目錄、各種數據類型、流、網址、MIME類型、線程或進程。

多線程處理模塊

QtGui模塊包含圖形組件和相關的類,例如按鈕、窗體、狀態欄、工具欄、滾動條、位圖、顏色、字體等。

強大的用戶圖形接口

QtNetwork模塊包含了網絡編程的類,這些類允許編寫TCP/IP和UDP的客戶端和伺服器,他們使網絡編程更簡單,更輕便。

網絡編程

QtXml包含使用XML文件的類,這個模塊提供了SAX和DOM API的實現。

xml處理接口

QtSvg模塊提供顯示的SVG文件的類。可縮放矢量圖形(SVG)是一種用於描述二維圖形和圖形應用程式的XML語言。

可縮放矢量圖處理

QtOpenGL模塊使用OpenGL庫渲染3D和2D圖形,該模塊能夠無縫集成Qt的GUI庫和OpenGL庫。

圖形渲染庫

QtSql模塊提供用於資料庫的類。

資料庫支持

等等還有很多,這裡就不再一一例舉了。

這麼多模塊,對於GUI編程,我們一般使用PyQt5.Qt中提供的接口。

創建一般GUI應用

具體步驟如下:

# 導入相關模塊

from PyQt5.Qt import *

import sys

# 創建應用程式對象

app = QApplication()

# 創建頂層窗口

window = QWidget()

# 設置窗口屬性

window.setWindowTitle('應用程式名稱')

window.resize(500, 400)

window.move(400, 200)

# 在頂層窗口中放置控制項

label = QLabel(window)

label.setText('這是一個Label控制項')

label.move(200, 100)

# 顯示控制項

window.show()

# 應用程式執行,進入到消息循環,等待事件響應

sys.exit(app.exec_())

簡化輸入

我們知道,如果只是創建一個普通的GUI應用程式,上面的這些代碼夠用了,我們只需要將label控制項換成自己應用程式中的控制項即可。

創建一個live template

前面的內容我們知道,PyCharm提供了一個live template功能,它可以使用簡短的字符輸入來替代我們輸入大段代碼內容。因此,我們可以將上述代碼製作成一個模板內容,當我們輸入「qtt」(打個比方,你可以替換成任意你喜歡的內容),讓編譯器自動為我們輸入上面的這些代碼。

以後,每次創建GUI應用程式時,只是修改label控制項的那部分內容即可。

更方便快捷

但是,這樣的方法只是簡化了我們的輸入,並沒有更好的封裝我們的代碼。

封裝

同樣的道理,我們可以將下面的代碼裝入到PyCharm中,定義一個live template模板。

#!/usr/bin/env python

# -*- coding:utf-8 -*-

from PyQt5.Qt import *

class Window(QWidget):

def __init__(self):

super(Window, self).__init__()

self.setWindowTitle($TITLE$)

self.resize(500, 500)

self.setup_ui()

def setup_ui(self):

$CODE$

if __name__ == '__main__':

import sys

application = QApplication(sys.argv)

window = Window()

window.show()

sys.exit(application.exec_())

按照上面的方法,將這個模板命名為qto,每次創建GUI應用程式時,在PyCharm中輸入qto,即可自動為我們輸入這一框架。

我們只需要輸入TITLE變量和我們需要的控制項(CODE),很方便,不是嗎?

好了,今天的內容就到這裡了,喜歡Python編程的小夥伴們關注我,後續會推出一些關於Python的GUI編程的一些小技巧和知識點。

轉載請註明出處,百家號:Python高手養成

相關焦點

  • 學會這一招,圖形界面編程不再複雜,Python工具PyCharm使用技巧
    上一篇內容我們使用PyQt5構造了一個GUI程序的通用框架(圖形界面編程技巧,用Python中PyQt5庫快速創建一個應用程式框架)。這樣的圖形用戶接口相對來說比較簡單。我們知道,日常使用的圖形界面都是比較複雜的。
  • Python開發者必知的 11 個 Python GUI 庫,你用過幾個?
    Python開發者必知的 11 個 Python GUI 庫,你用過幾個? 當你使用python編寫應用程式時,你就一定要使用GUI。Python GUI的選擇有很多。目前來說,Python GUI程序庫有30多個跨平臺框架。現在就列出其我認為最好的11個.
  • Python語言中使用pyqtgraph庫實現數據可視化
    背景在Python程式語言中,matplotlib是一種常用的用於數據可視化的繪圖庫,它提供了一套和matlab相似的命令API,開發者可以僅需幾行代碼,便可生成如直方圖,功率譜,條形圖,錯誤圖,散點圖等圖形,適用於交互式繪圖,而且也可以方便地將它作為繪圖控制項嵌入到GUI應用程式中
  • 三大Python GUI開源框架,誰才是你的最愛?
    作為通用程式語言,每個常見作業系統都有可用的解釋器,所以創建圖形用戶界面對於Python來說並不是難事。因為程式設計師有很多的選擇,真正困難的是如何為用戶創建一個簡單的方式來與程序互動。  在各種各樣的平臺上都有相應的UI框架,它們可能分別可以在Windows,Mac和Linux平臺上運行,也可能可以同時在這三個平臺上運行。  「你的應用程式是否有一個傳統的圖形用戶界面?」
  • 2019年必知的10大頂級Python庫
    python 在開發人員中流行的原因有很多。然而,最重要的一點是它有大量的庫供用戶使用。python 的簡單性吸引了許多開發人員為機器學習創建新的庫。由於有大量的庫,python 在機器學習專家中變得非常流行。所以,這裡要介紹的第一個庫是 TensorFlow。
  • 3個開源Python GUI框架
    在Python中,開始使用GUI編程的步驟並不是非常複雜,但它們確實需要用戶開始做出一些選擇。作為通用程式語言的本質,在每個通用作業系統中都可以使用解釋器,Python必須完全不知道它為創建圖形用戶界面所做出的選擇。
  • Python數據可視化之高速繪圖神器PyQtGraph庫,強烈建議收藏
    02什麼是PyQtGraph庫先上個2D繪製效果圖:再來個3D繪製效果圖:PyQtGraph是一個純python的圖形和GUI庫,構建於PyQt4/PySide和numpy之上,它主要用於數學/科學/工程應用方面。
  • 學習筆記,從NumPy到Scrapy,學習Python不能錯過這些庫
    在網絡上看到幾位前輩寫了關於python深度學習庫的文章,對於小小白來說,因為我剛開始學python,我得承認自己看完後依然覺得雲裡霧裡的,不知道這些庫到底對我有什麼用處。所以我到網絡上搜集補充關於這些庫的說明內容,感覺在這個整理資料的過程中,對於這些python程序庫了解了更多,以下是我整理的學習筆記。
  • 38個常用Python庫:數值計算、可視化、機器學習等8大領域都有了
    MySQL-python又稱MySQLdb,是Python連接MySQL最流行的一個驅動,很多框架也基於此庫進行開發。只支持Python 2.x,且安裝時有許多前置條件。由於該庫基於C語言開發,在Windows平臺上的安裝非常不友好,經常出現失敗的情況,現在基本不推薦使用,取代品為衍生版本。
  • 雲立方網科普:常用高效的Python爬蟲框架有哪些?
    Python是現在非常流行的程式語言,而爬蟲則是Python語言中最典型的應用,下面是總結的高效Python爬蟲框架,大家看看是否都用過呢。 Scrapy是一個為了爬取網站數據,提取結構性數據而編寫的應用框架,可以應用在包括數據挖掘,信息處理或存儲歷史數據等一系列的程序中
  • ImagePy——UI界面支持開放插件的Python開源圖像處理框架
    python 開源圖像處理框架,其 UI 界面支持開放插件。redirectedFrom=fulltext安裝:支持的系統:帶有 python2.7 和 python3 及以上版本的 windows、linux、mac 系統。ImagePy 是一個基於 wxpython 的 ui 框架,它不能在 linux 上用 pip 進行安裝。
  • 數據工程師需要掌握的 18 個 Python 庫
    Web測試自動化框架,最初是為軟體測試人員創建的。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數據,因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程式。可以使用 brew install beautifulsoup4 的方式來快速安裝bf4。數據清洗Spacyspacy可以用於進行分詞,命名實體識別,詞性識別等等,最核心的數據結構是Doc和Vocab。
  • 1個GUI界面,隨機生成若干姓名並保存為Excel,python如何實現?
    男女取名有方法,不能千篇一律之前,也提到過,我們在一些項目中,需要若干個隨機姓名,為了節省我們的測試時間,讓測試更加逼真,就定義了一個函數來生成隨機姓名。程序運行效果我們在界面中,將需要生成的隨機姓名的各個參數屬性進行設置。
  • 一個Python GUI神器,雙手徹底解放!
    今天給大家推薦一個非常牛X的Python GUI庫,PySimpleGUI可以說,有了它雙手真的徹底解放了,做個GUI分分鐘就能搞定。▍什麼是PySimpleGUI?PySimpleGUI是一個Python的GUI軟體包,目的是讓GUI更簡單。它支持4個框架,包括tkinter,Qt,WxPython和Remi。
  • 「技術文章」《Python 資料庫 GUI CGI編程》
    2.1 Linux下安裝MySQLdb模塊 使用包安裝可以 wget http://sourceforge.net/projects/mysql-python/files/latest/download$ tar xfz MySQL-python-1.2.3.tar.gz$ cd MySQL-python-1.2.3$whereis mysql_config
  • Python啥都行_Robot自動化測試
    比如你在python文件中寫好了一個函數login_system(username,password),然後Robot Framework就可以導出為Login System,別人寫腳本時就可以寫成Login System username password。
  • python機器學習:常用庫的介紹及安裝
    2、如果安裝了Anaconda後發現還有一些需要安裝的庫怎麼辦?這個時候可以通過Anaconda的DOS界面來安裝(可以通過「開始->所有程序->Anaconda下面找到Anaconda Prompt後單機打開即可),具體安裝命令是pip install + 你要安裝的庫名稱。
  • Python視頻教程網課編程零基礎入門數據分析網絡爬蟲全套Python...
    高級編程(6套課程) 注:零基礎全能篇中,針對windows和liunx系統均有兩套課程可供選擇學習,單純學python,哪個系統都一樣,初學者只需選擇自己熟悉的系統學習相應課程即可。 因篇幅有限,以下展示的只是課程裡部分內容如對python課程有更多疑問 請諮詢客服 1零基礎入門全能班 01 –python簡介 02 第一個程序 03-python執行方式和pycharm設置 04-程序的注釋和算術運算符 05 程序執行原理 06變量的使用以及類型 07
  • 您必須在2019年知道的十大Python庫
    在本文中,我們將討論Python中的一些頂級庫,開發人員可以使用這些庫來編寫,清理和表示數據,並在現有應用程式中實現機器學習。介紹Python是最流行和最廣泛使用的程式語言之一,已經取代了業界許多程式語言。
  • Python,爬蟲開發的不二選擇
    請看下面描述:1)JAVAJava的語法比較規則,採用嚴格的面向對象編程方法,同時有很多大型的開發框架,比較適合企業級應用。Java的學習曲線較長,不僅要學習語言相關的特性,還要面向對象的軟體構造方法,在此之後要學習一些框架的使用方法。(1)用途:Android & IOS 應用開發,視頻遊戲開發,桌面GUIs(即圖形用戶頁面),軟體開發,架構等。