PyQt5 概覽

Galois發表於2020-03-27

PyQt5 簡介

PyQt5 是 Digia 的一套 Qt5 應用框架與 python 的結合,同時支援 2.x 和 3.x。Qt庫由Riverbank Computing開發,是最強大的GUI庫之一 ,官方網站

PyQt5 是由一系列 Python 模組組成。超過 620 個類,6000 函式和方法。能在諸如 Unix、Windows 和 MacOS 等主流作業系統上執行。PyQt5 有兩種證照,GPL 和商業證照。

PyQt5 模組

PyQt5 類分為很多模組,主要模組有:

模組 功能
QtCore 包含了核心的非 GUI 的功能。主要和時間、檔案與資料夾、各種資料、流、URLs、mime 類檔案、程式與執行緒一起使用。
QtGui 包含了視窗系統、事件處理、2D影像、基本繪畫、字型和文字類。
QtWidgets 包含了一系列建立桌面應用的 UI 元素。
QtMultimedia 包含了處理多媒體的內容和呼叫攝像頭 API 的類。
QtBluetooth 包含了查詢和連線藍芽的類。
QtNetwork 包含了網路程式設計的類,這些工具能讓 TCP/IP 和UDP開發變得更加方便和可靠。
QtPositioning 包含了定位的類,可以使用衛星、WiFi 甚至文字。
Enginio 包含了透過客戶端進入和管理Qt Cloud的類。
QtWebSockets 包含了WebSocket協議的類。
QtWebKit 包含了一個基WebKit2的web瀏覽器。
QtWebKitWidgets 包含了基於QtWidgets的WebKit1的類。
QtXml 包含了處理 xml 的類,提供了 SAX 和 DOM API 的工具。
QtSvg 提供了顯示 SVG 內容的類,Scalable Vector Graphics(SVG)是一種是一種基於可擴充套件標記語言(XML),用於描述二維向量圖形的圖形格式(這句話來自於維基百科)。
QtSql 提供了處理資料庫的工具。
QtTest 提供了測試 PyQt5 應用的工具。

PyQt4 和 PyQt5 的區別

PyQt5 不相容 PyQt4。PyQt5 有一些巨大的改進。但是,遷移並不是很難,兩者的區別如下:

  • 重新組合模組,一些模組已經被廢棄(QtScript),有些被分為兩個子模組(QtGui, QtWebKit)。
  • 新增了新的模組,比如 QtBluetooth, QtPositioning,和 Enginio。
  • 廢棄了 SINGAL() 和 SLOT() 的呼叫方式,使用了新的訊號和槽處理方式。
  • 不再支援被標記為廢棄的或不建議使用的 API。

簡單的視窗:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import sys
# 引入PyQt5.QtWidgets模組,這個模組包含了基本的元件。
from PyQt5.QtWidgets import QApplication, QWidget
if __name__ == '__main__':
    # 每個 PyQt5 應用都必須建立一個應用物件。sys.argv 是一組命令列引數的列表。Python 可以在 shell 裡執行,這個引數提供對指令碼控制的功能。
    app = QApplication(sys.argv)
    # QWidge 控制元件是一個使用者介面的基本控制元件,它提供了基本的應用構造器。預設情況下,構造器是沒有父級的,沒有父級的構造器被稱為視窗(window)。
    w = QWidget()
    # resize()方法設定視窗大小:寬250px,高150px。
    w.resize(250, 150)
    # move() 是修改控制元件位置的的方法。它把控制元件放置到螢幕座標的(300, 300)的位置。
    w.move(300, 300)
    # 我們給這個視窗新增了一個標題,標題在標題欄展示。
    w.setWindowTitle('Simple')
    # show()能讓控制元件在桌面上顯示出來。控制元件在記憶體裡建立,之後才能在顯示器上顯示出來。
    w.show()
    # 進入應用的主迴圈中,事件處理器這個時候開始工作。主迴圈從視窗上接收事件,並把事件傳入到派發到應用控制元件裡。當呼叫 exit() 方法或直接銷燬主控制元件時,主迴圈就會結束。sys.exit() 方法能確保主迴圈安全退出。外部環境能通知主控制元件怎麼結束。
    sys.exit(app.exec_())

可以在這個小視窗上面做很多事情,改變大小,最大化,最小化等,這需要很多程式碼才能實現。這在很多應用中很常見,沒必要每次都要重寫這部分程式碼,Qt 已經提供了這些功能。PyQt5 是一個高階的工具集合,相比使用低階的工具,能省略上百行程式碼。

本作品採用《CC 協議》,轉載必須註明作者和本文連結
不要試圖用百米衝刺的方法完成馬拉松比賽。