日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

Python GUI編程之Python GUI庫綜述

 

前言

本文介紹利用Python開發(fā)GUI應用程序時幾種常見的跨平臺Python GUI庫。

注:本文基本開發(fā)環(huán)境配置為:

- Window7(64位)

- Python 3.8.5

- 以及各類Python GUI庫

本次分享內容的目錄如下:

前言

基本概念(CLI、GUI、GUI庫、Python GUI庫)

基于Tk的Tkinter(簡介、特點、應用、簡單示例)

基于wxWidgets的wxPython(簡介、特點、應用、安裝、示例)

基于Qt的PyQt(簡介、特點、應用、安裝、示例)

基于Qt的PySide2(Qt for Python)(簡介、特點、應用、安裝、示例)

基于GObject的PyGObject(簡介、特點、應用、安裝、示例)

結束語


1. 基本概念

在文章開始,我們先來理清幾個重要概念:

1.1 CLI(命令行界面)

CLI 是 Command-Line Interface 的英文簡稱,中文意思為命令行界面(或命令行接口),是指用戶通過鍵盤方式來顯示計算機操作界面(接口)。用戶通過鍵盤輸入指令,計算機接收到指令后,予以執(zhí)行,并在顯示器上輸出相關信息。

下面是 windows 系統(tǒng)上一個典型的 CLI 程序 (Windows PowerShell) 運行時的示意圖:

Python GUI編程之Python GUI庫綜述

 

在1973年以前,用戶都是通過命令行界面(CLI)方式顯示計算機操作界面的。命令行界面的程序通常需要用戶記憶操作的命令。

1.2 GUI(圖形用戶界面)

GUI 是 Graphical User Interface 的英文簡稱,中文意思為圖形用戶界面(或圖形用戶接口),是指采用圖形方式顯示的計算機操作用戶界面,是一種人與計算機通信的界面交互方式。

在 GUI(圖形用戶界面)中,用戶看到和操作的都是圖形對象(計算機屏幕上顯示窗口、菜單、圖標、按鈕、對話框等),用戶通過鼠標等輸入設備進行操縱,以完成不同的動作目的(如運行程序、打開文件等)。

下面是類Unix系統(tǒng) X Window System上 GUI 之一的 KDE Plasma Desktop 運行時的示意圖:

Python GUI編程之Python GUI庫綜述

 

與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受,學習成本大幅下降,也讓計算機的大眾化得以實現(xiàn)。

不過由于命令行界面要較圖形用戶界面節(jié)約計算機系統(tǒng)的資源,在熟記命令的前提下,使用命令行界面往往要較使用圖形用戶界面的操作速度要快,所以在現(xiàn)在的圖形用戶界面的操作系統(tǒng)中,通常都保留著可選的命令行界面。

1.3 GUI庫

GUI 庫也稱部件工具箱(Widget Toolkits),是指在程序設計時某些基本的GUI的組件元素的集合。它們一般以庫或者應用程序框架的形式出現(xiàn)。

GUI 庫包含一組部件(Widget),部件是一系列圖形控制元素的集合(如:按鈕、標簽、文本框等)。在構建GUI程序時,通常使用層疊方式,眾多圖形控制元素直接疊加起來。

GUI 庫分為偏底層的GUI庫更高級的GUI庫

常見的偏底層的GUI庫有:

  • WIndows API
  • X Window System 中包含了許多基本的部件,但通常需要通過Motif、GTK+或者Qt來使用

常見的更高級的GUI庫有:

  • Windows平臺:
    • MFC(Microsoft Foundation Classes):是Windows API的封裝。
    • Windows Forms:.NET的庫類集,可進行GUI控制。
  • 跨平臺(基于C或者C++,也經常與其他編程語言綁定):
    • Tk , Tcl 以及其他高級腳本語言用到的工具集(在Python中的接口是Tkinter)
    • GTK+ :主要針對X Window System,用于GNOME桌面環(huán)境。
    • Qt:可用于Unix/linux(X Window)、MS Windows、mac OS X、Windows CE以及Embedded Linux,用于KDE桌面環(huán)境。
    • wxWidgets(以前是wxWindows):針對C++、Python以及Perl的跨平臺工具集。
    • FLTK:跨平臺工具集,特點是小而快。
  • 跨平臺(基于JAVA)
    • AWT(Abstract Windowing Toolkit):用于Java程序,通常在選定的平臺下運行另一個工具集。
    • SWingAWT的替代品。
    • SWT(Standard Widget Toolkit):Java的本地部件工具集,是Eclipse項目的一部分。SWT運行相應平臺下的部件工具集(如Windows API,或者GTK+)。

1.4 Python GUI庫

當我們使用Python語言編寫GUI應用程序時,一般不會自己從最底層去實現(xiàn),通常會使用更高層次的Python GUI庫來完成。

由于Python的廣泛流行,目前有眾多優(yōu)秀的 Python GUI庫可供開發(fā)者選擇,如:基于QtPyQt5、基于QtQt for PythonPySide2)、基于wxWidgetswxPython、基于TkTkinter、基于GObjectPyGObject等。

下面就為各位朋友們簡要介紹這幾種常見的跨平臺Python GUI庫。


2 基于Tk的Tkinter

首先介紹的是基于Tk GUI庫Tkinter。因為Tkinter是Python語言內置的GUI庫。

2.1 Tkinter簡介

Tk是一個由C語言編寫的輕量級的跨平臺GUI庫。Tkinter(也稱Tk接口)是標準的Tk GUI庫的Python接口。

借助Tkinter,Python開發(fā)人員可以快速地創(chuàng)建跨平臺的簡單的 GUI 應用程序。

2.2 Tkinter特點

  • Python內置庫,無需額外安裝,隨時使用
  • 功能全面,學習和應用簡單,開發(fā)速度快
  • 適用開發(fā)不太復雜的GUI應用程序

2.3 Tkinter典型應用

Python自帶的IDLE應用程序就是用Tkinter編寫的,示意如下:

Python GUI編程之Python GUI庫綜述

 

2.4 Tkinter簡單示例

一、示例代碼:

 # 文件名:example_Tkinter.py
 
 from tkinter import *
 
 root = Tk()
 root.title("TkinterWindow")
 root.geometry("400x100")
 
 label = Label(root, text="這是一個Tkinter窗口!").pack(expand=True)
 
 root.mainloop()   

二、示例運行效果:

Python GUI編程之Python GUI庫綜述

 


3 基于wxWidgets的wxPython

3.1 wxPython簡介

wxWidgets是一個由C++語言編寫的跨平臺GUI庫。wxPython是對wxWidgets的Python封裝/綁定,可以Python模塊的方式提供給開發(fā)者使用。

借助wxPython,Python開發(fā)人員可以很方便地創(chuàng)建跨平臺的,具有健壯、功能強大的GUI應用程序。

wxPython是一款開源軟件,是Tkinter的一個比較流行的替代品,功能上面要強于Tkinter。wxPython提供了超過200個類,面向對象的編程風格,設計的框架類似于MFC。

項目信息:

(1)項目主頁:https://wxpython.org/

(2)項目(PyPI)網址:https://pypi.org/project/wxPython/

Python GUI編程之Python GUI庫綜述

 

(3)項目最新版本:v4.1.0(2020/04/25)

3.2 wxPython特點

  • 程序簡單
  • 易于編寫
  • 易于理解
  • 針對大型GUI應用程序具有較強的優(yōu)勢

3.3 wxPython典型應用

  • GRASS GIS,一種免費且開源的地理信息系統(tǒng)桌面應用程序(如下圖示)。
Python GUI編程之Python GUI庫綜述

 

  • BitTorrent,一種點對點的BitTorrent應用程序。
  • google Drive,Google云端存儲系統(tǒng)的桌面客戶端。
  • PlayOnLinux,一個Wine軟件兼容層的圖形化前端應用程序。

3.4 wxPython模塊安裝

可以在終端通過 pip install wxPython 命令完成 wxPython 模塊的安裝,如下:

 PS C:> pip install wxPython
 Collecting wxPython
   Downloading wxPython-4.1.0-cp38-cp38-win_amd64.whl (17.9 MB)
 Requirement already satisfied: numpy; python_version >= "3.0" in c:developpythonlibsite-packages (from wxPython) (1.19.1)
 Requirement already satisfied: six in c:developpythonlibsite-packages (from wxPython) (1.15.0)
 Requirement already satisfied: pillow in c:developpythonlibsite-packages (from wxPython) (7.2.0)
 Installing collected packages: wxPython
 Successfully installed wxPython-4.1.0
 PS C:> 

3.5 wxPython簡單示例

一、示例代碼:

# 文件名:example_wxPython.py
 
import wx

App = wx.App(False) 
frame = wx.Frame(None, -1, title="wxPython", size=(400,160))
wx.StaticLine(frame, size=(400, 1))
wx.StaticText(frame, -1, "這是一個wxPython應用程序!", pos=(80, 40))

frame.Show(True) 
app.MainLoop()

二、示例運行效果:

Python GUI編程之Python GUI庫綜述

 


4 基于Qt的PyQt

4.1 PyQt簡介

Qt是一款非常優(yōu)秀和知名的C++應用程序開發(fā)框架,廣泛用于開發(fā)跨平臺GUI庫,它體系龐大、接口豐富、文檔齊全。

PyQt提供了對 Qt C++ GUI類庫封裝的Python綁定,可以Python模塊的方式提供給開發(fā)者使用。借助PyQt,Python開發(fā)人員可以很方便地創(chuàng)建各種美觀、復雜、功能強大的跨平臺的GUI應用程序。

PyQt是一款自由軟件,其開發(fā)者是英國的“Riverbank Computing”公司。它提供了GPL與商業(yè)許可兩種授權方式:個人可以免費地用于自由軟件的開發(fā),同時又可以提供良好的商業(yè)支持。PyQt已經發(fā)展了很多年,技術比較成熟穩(wěn)定,技術文檔也比較豐富,具備靠前的影響力。PyQt3支持Qt1到Qt3;PyQt4支持Qt4;PyQt5支持Qt5。

項目信息:

(1)項目主頁:https://www.riverbankcomputing.com/software/pyqt/

(2)項目(PyPI)網址:https://pypi.org/project/PyQt5/

Python GUI編程之Python GUI庫綜述

 

(3)項目最新版本:v5.15.0(2020/06/01)

4.2 PyQt特點

  • PyQt的API與Qt類似,Qt的文檔通常仍然可以應用于PyQt,因此PyQt的開發(fā)文檔比較豐富。
  • 可以通過Qt Designer工具使用拖拉式的方法來設計界面,簡單易用。
  • 在使用PyQt的過程中要注意避免內存泄露以及懸掛指針。
  • 運行文件比較大。
  • 需要掌握一些C++相關知識。
  • 適合開發(fā)大型、復雜、商用GUI應用程序。

4.3 PyQt5典型應用

  • Eric Python IDE:運行截圖(如下圖示)
Python GUI編程之Python GUI庫綜述

 

  • Anki,:一個間隔重復抽認卡桌面應用程序
  • QtiPlot,:一種分析和可視化科學數據的計算機桌面應用程序

4.4 PyQt5庫安裝

可以在終端通過 pip install PyQt5 命令完成 PyQt5 庫的安裝,如下:

 PS C:> pip install PyQt5
 Collecting PyQt5
   Downloading PyQt5-5.15.0-5.15.0-cp35.cp36.cp37.cp38-none-win_amd64.whl (64.5 MB)
 Collecting PyQt5-sip<13,>=12.8
   Downloading PyQt5_sip-12.8.0-cp38-cp38-win_amd64.whl (63 kB)
 Installing collected packages: PyQt5-sip, PyQt5
 Successfully installed PyQt5-5.15.0 PyQt5-sip-12.8.0
 PS C:>

4.5 PyQt5簡單示例

一、示例代碼:

# 文件名:example_PyQt5.py

import sys
from PyQt5.QtWidgets import *

app = QApplication(sys.argv)

win = QWidget()
win.resize(400, 100)
win.setWindowTitle('PyQt5')
label = QLabel("這是一個PyQt5應用程序!", win)
win.show()

sys.exit(app.exec_())

二、示例運行效果:

Python GUI編程之Python GUI庫綜述

 


5 基于Qt的PySide2(Qt for Python)

5.1 PySide2簡介

Qt是一款非常優(yōu)秀和知名的C++應用程序開發(fā)框架,廣泛用于開發(fā)跨平臺GUI庫,它體系龐大、接口豐富、文檔齊全。

PySide2(又稱Qt for Python)提供了對 Qt C++ GUI類庫封裝的Python官方綁定,這樣就可以在Python應用程序中使用Qt5的API(PySide2模塊提供對各個Qt模塊,如QtCore、QtGui、QtWidgets等的訪問),允許Python開發(fā)人員充分利用Qt的潛力來開發(fā)各種美觀、復雜、功能強大的跨平臺的GUI應用程序。

歷經了Trolltech->Nokia->Digia Plc->Qt Group多次沿革,目前的PySide2提供了GPL、LGPL與商業(yè)許可三種授權方式。

PySide2提供了與PyQt5類似的功能,區(qū)別在于另外提供了LGPL授權(意味著開發(fā)者可以免費用于商業(yè))。

PySide2附帶一個Python綁定生成器Shiboken2(Qt for Python可以用它來創(chuàng)建PySide2模塊),可以把C++項目轉換為Python項目。

項目信息:

(1)項目主頁:https://wiki.qt.io/PySide2

(2)項目(PyPI)網址:https://pypi.org/project/PySide2/

Python GUI編程之Python GUI庫綜述

 

(3)項目最新版本:v5.15.0(2020/05/27)

5.2 PySide2特點

使用PySide2Qt for Python)可以充分利用Qt的應用程序開發(fā)框架和功能豐富的類設計GUI程序,主要有以下一些優(yōu)點:

  • 將Qt的跨平臺應用框架與Python的跨平臺解釋語言結合在了一起。
  • Qt使用信號與槽(Signals/Slots)機制進行對象之間的通信,它是類型安全且弱耦合的,易于創(chuàng)建可重用的軟件模塊。
  • 使用Qt Creator中的UI Designer或獨立的Qt Designer可以可視化地設計窗體,然后將窗體轉換為Python程序,可以大大提高界面設計的效率。
  • 將Qt和Python的優(yōu)點結合到了一起,程序員可以利用Qt豐富的UI設計功能,但不需要使用復雜的C++語言,而是使用Python語言編程。
  • 是Qt的“親兒子”,具備Qt官方支持
  • 比較適合開發(fā)復雜、大型的GUI應用軟件

當然也存在一些相應缺點:

  • 運行文件比較大。
  • 需要學習一些C++相關知識,以便于閱讀開發(fā)文檔。

5.3 PySide2典型應用

  • Qt Designer:運行截圖(如下圖示)
Python GUI編程之Python GUI庫綜述

 

5.4 PySide2模塊安裝

可以在終端通過 pip install PySide2 命令完成 PySide2 模塊的安裝,如下:

 PS C:> pip install PySide2
 Collecting PySide2
   Downloading PySide2-5.15.0-5.15.0-cp35.cp36.cp37.cp38-none-win_amd64.whl (139.6 MB)
 Collecting shiboken2==5.15.0
   Downloading shiboken2-5.15.0-5.15.0-cp35.cp36.cp37.cp38-none-win_amd64.whl (2.1 MB)
 Installing collected packages: shiboken2, PySide2
 Successfully installed PySide2-5.15.0 shiboken2-5.15.0
 PS C:> 

5.5 PySide2簡單示例

一、示例代碼:

# 文件名:example_PySide2.py

import sys
from PySide2.QtWidgets import *

app = QApplication(sys.argv)

win = QWidget()
win.resize(400, 100)
win.setWindowTitle('PySide2')
QLabel("這是一個PySide2應用程序!", win)
win.show()

sys.exit(app.exec_())

二、示例運行效果:

Python GUI編程之Python GUI庫綜述

 


6 基于GObject的PyGObject

6.1 PyGObject簡介

GObject是一個在LGPL許可下發(fā)布的自由軟件庫,它提供了一個輕便的對象系統(tǒng)并支持透明的多語言互通,可以直接使用在C程序中。GObject僅依賴于GLib和libc。它是GNOME的基石并且在GTK+,Pango,Accessibility Toolkit和大多數GNOME的高級庫和應用程序中被廣泛使用。

PyGObject提供了基于 GObject的庫(例如GTK,GStreamer,WebKitGTK,GLib,GIO 等)封裝的Python綁定。PyGObject使用glib,gobject,girepository,libffi 和其他庫與隨附的 typelib 文件(Gtk-3.0.typelib)中的其他元數據結合使用來訪問C庫(libgtk-3.so),并動態(tài)提供基于該信息的Python接口。

對于要使用GNOME編寫Python應用程序或使用GTK編寫Python GUI應用程序的開發(fā)人員,可以使用PyGObject很方便地創(chuàng)建各種美觀、復雜、功能強大的跨平臺的GUI應用程序。

PyGObject是一款在LGPL許可下的跨平臺(支持Linux,Windows和macOS)的自由軟件,其作者是著名的GNOME開發(fā)者James Henstridge

項目信息:

(1)項目主頁:https://pygobject.readthedocs.io

(2)PyPI項目網址:https://pypi.org/project/PyGObject/

Python GUI編程之Python GUI庫綜述

 

(3)項目最新版本:v3.36.1(2020/05/07)

6.2 PyGObject特點

  • 功能強大
  • 適合開發(fā)大型、復雜的GUI應用程序
  • 適合有GNOME/GTK+基礎的開發(fā)人員
  • 對Linux系統(tǒng)更友好,在Windows系統(tǒng)安裝不方便

6.3 PyGObject典型應用

  • Pitivi-:一個免費的開源視頻編輯器桌面應用程序(如下圖示)
Python GUI編程之Python GUI庫綜述

 

  • Anaconda -Fedora,RHEL和其他Linux發(fā)行版使用的桌面安裝程序
  • D-Feet-易于使用的D-Bus調試器
  • Gaphor-一個簡單的桌面建模工具
  • GNOME Music - 一個GNOME桌面音樂播放器軟件

6.4 PyGObject安裝(Windows)

在運行應用程序之前,需要先行安裝PyGObject,GTK及其依賴項。

本機在終端通過pip install PyGObject命令進行PyGObject模塊安裝時會報錯失敗,故采用其官網推薦的Windows平臺安裝步驟進行:

  • Step1:通過http://www.msys2.org/下載安裝程序 msys2-x86_64-20200720.exe
  • Step2:運行安裝程序并安裝提示完成安裝(如安裝目錄為 C:msys64)。注:MSYS2需要64位Windows 7或更高版本。
  • Step3:按照說明設置基本環(huán)境。
  • Step4:運行 C:msys64mingw64.exe 后會彈出一個終端窗口
  • Step5:在本終端窗口執(zhí)行 pacman -Suy
  • Step6:在本終端窗口執(zhí)行 pacman -S mingw-w64-x86_64-gtk3 mingw-w64-x86_64-python3 mingw-w64-x86_64-python3-gobject

驗證測試:

  • Step1:要測試 GTK 3 是否正常運行,可以在本終端窗口運行 gtk3-demo,會出現(xiàn)一個演示應用程序。

使用方法:

  • Step1:將 xxx.py 您創(chuàng)建的腳本復制到 C:msys64home<username>
  • Step2:在本終端窗口運行 python3 xxx.py,會出現(xiàn)相應桌面應用程序。

6.5 PyGObject簡單示例

一、示例代碼:

# 文件名:example_PyGObject.py

import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk

window = Gtk.Window(title="PyGObject")
window.set_size_request(400, 100)

hbox = Gtk.Box(spacing=6)
window.add(hbox)
label = Gtk.Label("這是一個PyGObject應用程序!")
hbox.pack_start(label, True, True, 0)

window.show_all()
window.connect("destroy", Gtk.main_quit)
Gtk.main()

二、示例運行效果:

Python GUI編程之Python GUI庫綜述

 


結束語

目前支持Python語言開發(fā)GUI應用程序的Python GUI庫有幾十種(詳見Python Wiki頁面介紹:https://wiki.python.org/moin/GuiProgramming),限于篇幅,本文僅僅是概要介紹了最值得了解(個人淺見)的5種分享給大家,算是拋磚引玉,大家可以結合實際情況選擇一款適合的Python GUI庫來進一步學習掌握應用。

希望本文能對您有所幫助!喜歡的話就點個贊加關注支持一下哈:)

分享到:
標簽:Python GUI
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰(zhàn)2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定