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 協議》,轉載必須註明作者和本文連結