PySide 概述 (基於 Python 的 GUI 綁定)


PySide 是一個將強大 C++ 編程語言 Qt 庫綁定到 Python 編程語言的 GUI 應用程序工具包。

與 Qt 一樣 PySide 也是自由軟件,其采用 LGPL (GNU Lesser General Public License) 許可授權協議。

 

下載 PySide 6     下載 PySide 2

 

下載 PySide 1

 

PySide 由 Qt 官方開發維護,項目名 Qt for Python。

2018 年 6 月發布 PySide2,2009 年 8 月 PySide1 首次發布。

從 PySide2 起,Shiboken2 模塊從主安裝包中分離,需單獨或依賴安裝。

最新版 PySide6 基於 Qt 6.1.1,穩定版 PySide2 基於 Qt 5.15.2,過時版 PySide1.2.4 基於 Qt/C++ 4.8.7。

PySide6 支持 Python 3.6 3.7 3.8 3.9,不再支持 Python 2.7;PySide2 支持 Python 2.7 3.5 3.6 3.7 3.8 3.9 (某些模塊不支持 x86);PySide1 僅支持 Python 2.7 3.4。

PySide2 和 PyQt5 API 相差很大,但 PySide1 和 PyQt4 API 卻幾乎完全兼容 (除名稱不同外)。

PySide 帶有拖拽式 GUI 設計工具 QtDesigner (但理念不成熟隻適於新手)。

PySide 是 Python 編程語言的 GUI (圖形用戶界麵) 解決方案之一,除可代替 Python 內置 Tkinter 外,主要用於取代 PyQt。

Python GUI 的其它替代者,包括 PyQt PyGTK wxPython 等。

 

Shiboken


Shiboken 是一個 Generator Runner 前端插件,它使用 CPython 源代碼為 C++ 庫生成綁定。

Generator Runner 是為方便 C++ 和 Qt 庫開發語言綁定而創建的一個工具。

它提供瞭一個框架,使得這個過程能最大可能自動化:使用 ApiExtractor 提取 C++ 頭文件中的信息,通過相應前端 (用戶可以自己提供) 生成某種目標語言綁定。

Shiboken 為 CPython 生成綁定,DocGenerator 為要綁定的庫生成文檔。

 

Shiboken

 

Generator Runner 定義瞭一個前端接口類 Generator,每個前端插件 (如 Shiboken) 隻需要提供瞭一個函數 void getGenerators(GeneratorList* list) 來返迴包含 Generator 的一個鏈錶 (QLinkedList)。

當調用 Generator Runner 時,通過 generatorrunner --generator-set=shiboken 命令行指定使用哪一個前端。

當編譯或安裝 Shiboken 時,我們會注意到和 Shiboken 名字相關的有 3 個文件:

shiboken_generator(.dll/.so/...) 是前端插件

shiboken-python*(.dll/.so/...) 是最終生成代碼運行所需的依賴

shiboken(.exe) 是 Shell 文件,就是 generatorrunner --generator-set=shiboken

命令行 --generator-set 可指定 Shiboken 插件完整路徑。

若不是完整路徑,generatorrunner 會先閤成文件名 shiboken_generator.dll,再搜索編譯時所指定的插件目錄、QCoreApplication::libraryPaths() 返迴路徑。

要想為 C++ 庫生成綁定,需 API Extractor 從 C++ 庫頭文件中提取信息,通過 typesystem 文件控製提取 (修改、重命名) 哪些信息。

信息提取後,理論上就可為各種高級語言提供綁定 (隻要存在相應前端)。

 

版本曆史

時間 版本 Qt 說明 備注
2021.12 6.2.2 6.2.2
2021.05 6.1.0 6.1.0
2020.12 6.0.0 6.0.0 不再支持微軟 Windows 7

不再支持 Python 2.7

最低支持 Python 3.6

2020.11 5.15.2 5.15.2
2020.09 5.15.1 5.15.1 開始支持 Python 3.9
2020.07 5.14.2.3 5.14.2
2020.05 5.15.0 5.15.0 開始支持 Qt 5Pdf QtQuickControls2 QtSerialPort MSVC2019
5.14.2.2 5.14.2
2020.04 5.14.2.1 5.14.2
2020.03 5.14.2 5.14.2
2020.01 5.14.1 5.14.1
2019.12 5.14.0 5.14.0 開始支持 CPython3.8
2019.11 5.13.2 5.13.2
2019.09 5.13.1 5.13.1
2019.06 5.13 5.13

開始支持 PDF OpenSSL1.1

QtWebEngine 默認不支持彈齣本地文檔鏈接

不再支持 MSVC2015
2019.03 5.12 5.12
2018.06 5.11 5.11

Python2.7 (采用 MSVC2008 構建)

Python3.5 3.6 3.7 (采用 MSVC2015 構建)

由 Qt 官方維護, 工程名改為 Qt for Python

Web 核心由 Apple Safari 改為 Google Chromium

2015.10 1.2.4 4.8.7

Python2.6 2.7 (采用 MSVC2008 構建)

Python3.3 3.4 (采用 MSVC2010 構建)

最後一個 Qt 4 綁定版本, 存在一些 Bugs,譬如:

粘貼修改交互 Web 內容自動變行 、插入位置不對 、自動設置字體顔色 color=#000

在 QWebView 點擊某些 JavaScript 鏈接無響應 、某些鏈接不彈齣窗口 、某些 PNG 圖片不展示

2013.08 1.2.1 4.8
2009.08 1.0 4.5 首次發布 由開源社區維護, 采用 LGPL 許可協議

 

版權聲明: 本文為獨傢原創稿件,版權歸 樂數軟件 ,未經許可不得轉載。