使用PySide6/PyQt6实现Python跨平台GUI框架的开发
在前面的《Python開發》中主要介紹了FastAPI的后端Python開發,以及基于WxPython的跨平臺GUI的開發過程,由于PySide6/PyQt6 在GUI的用途上也有很大的優勢,因此把原先完成的WxPython 開發框架改造成使用PySide6/PyQt6實現Python跨平臺GUI框架的開發過程,本篇隨筆介紹它們之間項目聯系和不同,主要針對PySide6/PyQt6 的特性進行不同的分解介紹。
1、技術架構體系--一個中心,多個前端
基于PySide6/PyQt6實現的 Python跨平臺桌面端GUI框架,和WxPython的跨平臺桌面端一樣,都是是整個架構體現的一部分,一個Web API中心,同時提供多個接入的終端,如下架構圖所示。
PySide6 和 PyQt6 開發上基本上已經趨向大同,很多時候只需要替換一下前面的命名空間即可,因此PySide6 和 PyQt6 開發上已沒有多少差異,QT的官方已經把PySide作為Python的GUI 標準案例進行文檔介紹了。
其中的Python + FastAPI項目是一個Web API的項目,為各個前端提供接口的后端項目,其界面自動整合Swagger的文檔界面,如下所示。
單個模塊包含很多通用的接口,通用的接口能滿足90%以上的功能需求,以及一些額外的自定義接口。如下是客戶信息模塊的接口列表。
該后端接口采用統一的接口協議,具有統一的協議規范和定義。標準協議如下所示。
{
"success": false,
"result": T ,
"targetUrl": "string",
"UnAuthorizedRequest": false,
"errorInfo": {
"code": 0,
"message": "string",
"details": "string"
}
}
結合泛型的方式,這樣定義可以很好的抽象不同的業務類接口到基類BaseApi中,這樣增刪改查等處理的接口都可以抽象到BaseApi里面了。
權限模塊我們涉及到的用戶管理、機構管理、角色管理、菜單管理、功能管理、操作日志、登錄日志等業務類,那么這些類繼承BaseApi,就會具有相關的接口了,如下所示繼承關系。
因此在前端、后端都可以廣泛的使用基類抽象的方式,實現絕大多數接口的封裝處理。
2、PySide6/PyQt6實現Python跨平臺的桌面前端的基類設計
對于桌面前端,由于大多數情況下,界面的表現邏輯可以使用不同的規則進行抽象,如自定義控件、列表界面、彈出對話框界面等,我們把它抽象出來進行不同的處理。子類界面進行一定程度的擴張即可獲得更好的使用、更簡化的代碼。
對于自定義控件,我們對其封裝,使之能夠在開發使用習慣上更一致,下面是我們根據需要對常見的原生控件進行一些自定義控件的封裝列表。
自定義控件在提供一致的接口上,也可以更有效的提供一些特殊接口,如簡化字典數據的綁定處理等。
對于列表和對話框界面的封裝,能夠簡化對泛型模型數據的統一處理,因此可以簡化繼承子類的代碼,提供代碼維護開發和維護的效率。
3、PySide6/PyQt6實現Python跨平臺的桌面前端的界面展示
完成了基礎部分的自定義控件、對話框窗口、列表窗體、API調用封裝等方面的處理后,就可以基于這些基礎上進行界面的開發了。
登錄界面效果如下。
和WxPython的跨平臺界面效果一樣,該框架也是一個多文檔管理界面,其中用戶管理界面如下所示。
列表包含有有樹形列表、條件查詢框、通用條件(查詢、新增、編輯、刪除、導出)等、列表展示、分頁導航等內容。這些都是在基類中進行了統一的抽象處理,子類根據需要調整屬性或重寫相關函數即可實現個性化的界面定義。
樹列表或者表格控件,右鍵可以彈出相關的右鍵菜單
在列表界面中,選擇新增、編輯,會彈出模態對話框進行數據展示或者編輯處理。
參數配置界面效果如下所示
通用字典信息的管理如下所示。
批量新增字典項目界面如下。
系統中統一展示和選擇圖標的界面如下所示。
其他界面就不再一一介紹,有空再繼續細化各個模塊的開發總結。
4、WxPython桌面前端的界面展示
對照上面的PySide6/PyQt6實現Python跨平臺GUI框架界面,我們把WxPython相關的界面對比一下,先有一個直觀的感受。
樹列表或者表格數據控件支持右鍵彈出菜單處理。
在列表界面中,選擇新增、編輯,會彈出模態對話框進行數據展示或者編輯處理。
參數配置界面效果如下所示
通用字典信息的管理如下所示。
系統中統一展示和選擇圖標的界面如下所示。
總結
以上是生活随笔為你收集整理的使用PySide6/PyQt6实现Python跨平台GUI框架的开发的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VSCode配置 Debugger fo
- 下一篇: 一棵树,