Last Updated on 2021-11-07 by Clay
PySide 是 Python 的一個製作圖形化介面(GUI)的套件,不過大家比較有印象的應該都是 PyQt 以及 Tkinter。
我曾使用過 PyQt5 一段時間,並留下了相關的紀錄文章:[PyQt5] 基本教學(1) 安裝 PyQt5,印出 Hello World! ,有興趣的朋友們也可以去那邊看看。
其實,PySide 跟 PyQt 是系出同門,源頭全都是 Qt。之所以會有兩個版本,自然是發生了許多事情,這中間那些簡直可以去演連續劇的愛恨情仇,在此就不多贅述了。
簡單來講,PySide 可商用、PyQt 若要商用則需購買授權。
另外 PySide 和 PyQt 的程式碼相容性極高;毫不誇張地說,你甚至可以拿其中一邊的程式碼去另外一邊順利執行。
本文所使用的 PySide 版本為 PySide6,對應的是 Qt6。在我記述本篇筆記的當下(2021-08-09),可說是最新的 Python 製作圖形化介面的套件也不為過。
順帶一提目前它只支援 Python3.6+ 且不支援 Python3.10。
本篇文章主要紀錄如何下載、安裝 PySide6,並簡單寫一段程式碼確認其可順利執行。
下載安裝
首先,我會建議環境要乾淨地切割開來,不要在原生環境下直接安裝套件。不過建議只是建議,或許你有著自己的理由,那就跳過建立虛擬環境這一步。
(Optional)建立虛擬環境
mkdir pyside6_demo
cd pyside6_demo
python3 -m venv venv
source venv/bin/activate
pip 安裝
pip3 install pyside6
範例程式碼
安裝完畢後,我們當然會想知道安裝好的 PySide6 套件是否能正常運行,對吧?
每次學一個新的程式語言,就要印出一次 Hello World。使用一個新的圖形化介面套件也是同樣的道理。
# coding: utf-8
import sys
from PySide6.QtWidgets import QApplication, QLabel, QWidget
class MainWindow(QWidget):
def __init__(self):
# Window
super(MainWindow, self).__init__()
self.resize(200, 150)
self.setWindowTitle("PySide6 Demo")
# QLabel
self.label = QLabel(self)
self.label.setGeometry(65, 65, 100, 10)
self.label.setText("Hello World!")
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
sys.exit(app.exec_())
Output:
在我的環境中,PySide6 可以正常運行,太棒了!
非常有趣的是,程式碼我是直接從我舊的 PyQt5 專案複製過來的,只把 PyQt5 的模組名稱改成了 PySide6。
References
- https://medium.com/weekly-python/getting-started-writing-qt-6-applications-in-python-with-pyside6-389ee4c384ee
- https://www.reddit.com/r/QtFramework/comments/ni27qi/complete_26_part_pyside_tutorial_updated_for/