前面內容,我們介紹了關於PyQt5的一些常用高級控制項的使用,為了更好的便於大家理解,我們通過一些案例進行了講解。
用Python將電子表格Excel展示在界面中,PyQt5之QTableWidget應用
Excel表格搬到Python界面上?可以實現!結合PyQt5的QTabWidget類
Python之PyQt5編程,用代碼設置剪切板內容,QClipboard類的使用
Python用PyQt5製作窗體狀態欄,基本控制項QStatusBar使用方法詳解
今天,我們來介紹另外一種常用的高級控制項-QTreeWidget(樹形控制項)。相信大家對這個也不會陌生。看下圖。
VMware界面中虛擬機列表展示
此外,還有很多社交軟體中聯繫人列表,等等。
這些內容的展示,都使用了樹形控制項(或者類似的樹形控制項)。如果使用得當,這絕對是界面編程中一個高大上的控制項。下面,讓我們來慢慢揭開它的面紗吧!
01QTreeWidget類
Python中「一切皆對象」。對於一個界面中的控制項來講,展示之前將其相應的類進行實例化,並把它放置在合適的父控制項之中,如果能理解這個過程,我們就算是掌握了界面編程(利用PyQt5)的通用方法了。
通常來講,我們可以不用自己編寫這些複雜冗餘的界面代碼(直接使用Qt Designer就可以達到效果)。但作為初學者,強烈建議還是先逐行敲代碼吧!
廢話少說,我們先來看下今天的主角QTreeWidget類。首先,來了解下它從哪裡來?
Python環境下輸入下面內容
>>>from PyQt5.Qt import QTreeWidget
>>> QTreeWidget.__mro__
<class 'PyQt5.QtWidgets.QTreeWidget'>,
<class 'PyQt5.QtWidgets.QTreeView'>
<class 'PyQt5.QtWidgets.QAbstractItemView'>
<class 'PyQt5.QtWidgets.QAbstractScrollArea'>
<class 'PyQt5.QtWidgets.QFrame'>
<class 'PyQt5.QtWidgets.QWidget'>
<class 'PyQt5.QtCore.QObject'>
<class 'sip.wrapper'>
<class 'PyQt5.QtGui.QPaintDevice'>
<class 'sip.simplewrapper'>
<class 'object'>
QTreeWidget類的常用屬性和方法這裡就不再贅述了,網上一搜一大堆,感興趣的小夥伴自行搜索學習。
這裡需要強調一下的就是,QTreeWidget繼承自QTreeView,但是,跟我們之前學過的內容稍有差異,對於處理一些複雜的樹形結構展示,我們一般使用QTreeView類,比如文件系統的樹形結構(見下面示例)。
下面通過兩個例子來大家掌握QTreeWidget的用法。
02如何創建一個樹形控制項
我們來看下面的例子,我們有這樣一些人員的信息,結構如下:
rootData = {'Bobby':[18, '男', '湖南長沙'],
'Lucy':[20, '女', '廣西桂林'],
'LiLei': [45, '男', '山西大同']}
我們需要按照人員姓名分類,當單擊姓名時,顯示這個人的年齡、性別、籍貫等信息。
代碼如下所示:
我們來看下程序運行效果。
上面僅僅是創建了一個樹形控制項,還有沒有別的用法呢?上面提到了QTreeView的特殊用法,我們來看下面的例子。
03製作一個資源管理器
我們的需求是這樣的,讓程序自己獲取系統盤符中的文件目錄結構,製作一個簡單的資源管理器,左側顯示文件盤符及目錄信息,當我們單擊盤符或者相應的文件夾時,樹形展開,最終將文件夾內容顯示到右側窗體中。
我們來看下代碼
我們來看下運行效果,如下圖所示
好了,今天的內容就到這裡了,喜歡這篇文章的小夥伴點個讚,後續推出精彩內容,教大家做一個基於QTreeWidget的菜譜查詢程序。感興趣的小夥伴關注我哦
想要今天原始碼的小夥伴關注私信「qtreewidget」即可獲取。喜歡Python編程的小夥伴關注我
轉載請註明出處,百家號:Python高手養成