使用PySide6/PyQt6或者WxPython實現對列表界面和樹列表界面的整合處理
在之前隨筆《使用PySide6/PyQt6實現Python跨平臺通用列表頁面的基類設計》中也介紹過對于基于Python對桌面應用開發的處理,針對常規列表界面的基類做了封裝,以便適應比較豐富且彈性化界面的要求,并且減少子類的代碼處理,本篇隨筆進一步探討使用PySide6/PyQt6或者WxPython實現對列表界面和樹列表界面的整合處理這個主題。
1、使用PySide6/PyQt6實現對列表界面和樹列表界面的整合處理
基于重用及減少子類代碼的目的,我們抽象了列表界面的基類,我們業務列表界面只需要繼承基類,并在構造函數提供相應的信息即可比較彈性化的處理界面多元化的問題。
對于常規的列表界面,一般包括查詢條件、列表界面(包括分頁信息)等元素,如下界面所示。

實際業務的界面可能如下所示。

使用PySide6/PyQt6 的桌面端開發的時候,我們初始化業務類,并傳遞相關參數給基類列表界面構造處理即可,如下構造函數處理所示。

而有時候,界面上有時候需要搭配樹列表進行快速查詢或展示的需要,因此也需要在基類中進行一定的抽象處理,以便子類能進一步減少代碼。
那么我們通過參數條件進行指定,如果條件符合,那么構建樹列表界面即可。

如用戶列表界面中,我們需要展示用戶部門、用戶角色的分類信息,如下所示。
用戶管理界面的列表界面如下所示。

那么我們只需要在子類的構造函數處理上,我們只需要設置參數 use_left_panel = True,并且實現 create_tree_panels 函數即可。

我們在基類中和子類的分工中,基類剝離實際業務具體細節,而在高緯度上進行內容的組合即可。
如在基類窗體中,其中的_create_content_panel 是基類構建主查詢面板內容的邏輯,其中包括輸入條件展示、常見按鈕顯示、以及列表、分頁欄目等。
基類負責組合這些元素在一起即可,具體細節下沉到子類進行處理。

如對于用戶列表界面的樹列表界面,我們只需要在子類FrmUser中重寫函數 create_tree_panels 即可,然后在通過構造函數創建兩個自定義樹列表控件即可,如下所示。

可以看到界面代碼比較簡潔,關注點只需要集中在創建樹列表即可。
那么運行后就會在基類自動組裝中,會展示到主列表界面的左側了。

雖然我們在創建樹列表的時候,會創建對應的右鍵菜單,如下界面所示。

不過有時候為了直觀功能的展示,我們可能希望在樹列表的頂部增加一些常規的按鈕,如新增、刷新等,那么子類如何進階來實現了。
那么我們可以對樹列表控件進行進一步的封裝下,增加一個函數來處理下即可,如下所示。

然后在封裝的函數中進一步包裝下界面后返回給字典集合即可。

整合后界面就可以看到新增的按鈕集合了,這樣具體細節還是交給子類,父類沒有進行干涉,邏輯和細節分離。

2、使用WxPython實現對列表界面和樹列表界面的整合處理
對于上面的使用PySide6/PyQt6實現樹列表+常規列表的展示處理,在使用WxPython 的桌面端開發的時候,也是類似的處理方式。
業務列表窗體界面一般也是分為兩個部分

對于常規的展示列表界面,列表界面一般分為查詢區、列表界面展示區和分頁信息區,我們把它分為兩個主要的部分,如下界面所示。

在開始的用戶界面如下所示。
我們在父類窗體中定義一個開關變量,用來開啟或者關閉左側樹列表面板的,如下代碼所示。

這樣構建樹列表就交給函數 create_tree_panels 實現即可,它會構建一到多個的樹列表,父界面窗體負責整合它們顯示即可。
對于業務的客戶信息列表界面,生成的代碼如下所示(以客戶信息表為例):

對于上面用戶業務界面來說,也是類似PySide/PyQt的界面代碼,因為我們為基類的接口提供了類似的實現。
同樣來說,如果我們需要再樹列表的頂部增加一些操作按鈕顯示,那么使用對應的封裝函數來返回一個新的面板即可。如下代碼所示。

具體的封裝函數,我們在WxPython項目類中實現即可,基本上沒有太多的差異。

最后在WxPython項目的顯示界面效果如下所示。

可以看到,不管是WxPython的界面,還是PySide/PyQt的運行界面,在列表窗體的基類,相同的抽象函數處理邏輯下,都非常的方便,處理的代碼也很類似,因此掌握兩個不同Python的組件UI的界面開發,在開發框架的友好加持下,會變得非常方便和簡便,開發項目起來,會事半功倍,更不用說會有代碼生成工具上的支持了。

選擇相關的數據表后,一鍵生成相關的代碼,如下所示。

專注于代碼生成工具、.Net/Python 框架架構及軟件開發,以及各種Vue.js的前端技術應用。著有Winform開發框架/混合式開發框架、微信開發框架、Bootstrap開發框架、ABP開發框架、SqlSugar開發框架、Python開發框架等框架產品。
??轉載請注明出處:撰寫人:伍華聰??http://www.iqidi.com?
????
浙公網安備 33010602011771號