Python界面如何漂亮的展示樹形結構,PyQt5控制項之QTreeWidget詳解

2021-01-07 python高手養成

前面內容,我們介紹了關於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高手養成

相關焦點

  • Json數據顯示到界面上,用哪個控制項?Python用PyQt5進行界面設計
    樹狀結構Python界面如何漂亮的展示樹形結構,PyQt5控制項之QTreeWidget詳解本篇內容我們不講知識點,只講這個控制項的應用。(感興趣的小夥伴可以看一下這篇文章Python用PyQt5設計省市縣三級聯動的下拉選框,QComboBox使用詳解)這篇文章中我們使用QComboBox控制項製作了一個三級聯動的下拉選框。
  • Python用PyQt5設計界面,如何正確顯示一幅圖片,QPixmap控制項詳解
    前期回顧擁有漂亮的筆刷才能繪製多彩界面,PythonPyQt5中QPen和QBrush類Python用PyQt5繪製多彩隨機散點圖,基本控制項之QPainter使用詳解Python用PyQt5製作顏色對話框
  • Python界面編程之PyQt5基礎控制項介紹,QSlider滑動條控制項使用詳解
    比如:標籤QLabel(參見盤點界面編程中那些常用控制項,詳解PyQt5中標籤控制項QLabel的使用)單行文本QLineEdit(參見Python界面編程之PyQt常見控制項展示,QLineEdit文本框類使用詳解)多行文本QTextEdit(參見Python界面編程之PyQt常見控制項展示,QTextEdit文本框類使用詳解)按鈕QPushButton(參見Python用PyQt5設計漂亮界面之按鈕類控制項的使用
  • Python界面編程之PyQt5常見控制項應用展示,單選鈕和複選鈕使用詳解
    前幾篇內容,我們詳細介紹了Python中PyQt5庫中一些常用的控制項類。一大波複習資料送給大家Python用PyQt5設計漂亮界面之按鈕類控制項的使用,QPushButton詳解Python界面編程之PyQt常見控制項展示,QTextEdit文本框類使用詳解Python
  • Python界面編程之按鈕類控制項的使用,PyQt5之QPushButton控制項詳解
    前面內容我們介紹了PyQt5常見的文本類控制項和標籤類控制項的使用。Python界面編程之PyQt常見控制項展示,QTextEdit文本框類使用詳解Python界面編程之PyQt常見控制項展示,QLineEdit文本框類使用詳解
  • 用Python將電子表格Excel展示在界面中,PyQt5之QTableWidget應用
    Python用PyQt5製作窗體狀態欄,基本控制項QStatusBar使用方法詳解為界面添加功能豐富的工具箱,Python中PyQt5之QToolBar類的使用,展示在表格控制項中展示一些數據。【造輪子】界面有了,數據也有了,我們將兩個類整合起來就可以達到想要的效果,將Excel表格中的數據展示到我們的QTableWidget控制項中。原始碼如下:
  • qtreewidget選擇節點專題及常見問題 - CSDN
    現在需要將這些節點之間的虛線去掉,可採用兩種方式,一種是在代碼中添加控制項的樣式,另外一種是在qtcreator中直接設置樣式。 第一種:qtcreator中設置樣式: 右鍵該控制項,選擇change styleSheet…菜單,然後進入到樣式編輯界面,添加如下代碼: QTreeView::branch {image:none;}
  • python高級進階 002第一個pyqt5程序
    瀏覽器版本過低,暫不支持視頻播放以下開始文字講解:在上一節的教程中,我們已經將圖形化界面開發的基本環境已經搭建完畢,本節,我們繼續使用pyqt5開發程序。以下 ,我們對生成代碼知識點簡要解析:界面的生成基於PyQt5庫庫來自於pip管道下載命令,舉例pip install pyqt5 -i https://pypi.tuna.tsinghua.edu.cn/simplesys模塊負責系統文件等操作模塊QtWidgets是所有qt控制項中的基類。QApplication簡單理解成程序的進程,代碼實例化為app這個對象。
  • Python用PyQt5實現多種彈出消息框,QMessageBox控制項使用詳解
    Python界面編程之PyQt5基礎控制項介紹,QSlider滑動條控制項使用詳解Python界面編程之PyQt5常見控制項應用展示,單選鈕和複選鈕使用詳解Python用PyQt5設計漂亮界面之按鈕類控制項的使用,QPushButton詳解
  • Python用PyQt5製作窗體狀態欄,基本控制項QStatusBar使用方法詳解
    前情提要Python用PyQt5創建時間日期控制項,Qt圖形界面編程之QDateTimeEdit「五一」快到了,用Python中PyQt5做一個日曆,QCalendar控制項詳解Python用PyQt5設計界面,如何正確顯示一幅圖片,QPixmap控制項詳解另外,我們詳細介紹了QMainWindow窗體的一些基本控制項為界面添加功能豐富的工具箱,Python中PyQt5之QToolBar類的使用Python用PyQt5設計界面之菜單製作,QMenuBar詳解
  • Python用PyQt5創建時間日期控制項,Qt圖形界面編程之QDateTimeEdit
    前面內容我們介紹了日曆控制項的使用方法及PyQt5中常用的一些控制項。回顧精彩內容「五一」快到了,用Python中PyQt5做一個日曆,QCalendar控制項詳解Python用PyQt5設計界面,如何正確顯示一幅圖片,QPixmap控制項詳解Python用PyQt5
  • Python用PyQt5製作顏色對話框,PyQt圖形界面編程之QColorDialog
    彈出對話框更加方便人機交流Qt圖形界面編程之QFileDialog類,Python用PyQt5製作文件對話框如何通過Qt界面設置字體屬性,Python中PyQt5的QFontDialog類詳解Python用PyQt5製作彈出式輸入框,Qt圖形界面編程之QInputDialog今天,我們來介紹另外一種彈出對話框QColorDialog控制項。
  • Python用PyQt5製作彈出式輸入框,Qt圖形界面編程之QInputDialog
    計數器QSpinBox使用詳解,Python用PyQt5製作圖形界面基礎控制項篇Python用PyQt5實現多種彈出消息框,QMessageBox控制項使用詳解Python界面編程之PyQt5基礎控制項介紹,QSlider滑動條控制項使用詳解
  • Excel表格搬到Python界面上?可以實現!結合PyQt5的QTabWidget類
    數據獲取Excel文件另類操作,如何用Python中xlrd模塊獲取電子表格的信息另外,我們對這個類進行了擴展應用,使用PyQt5中的QTableWidget控制項,對該類獲取到的電子表格數據在界面中進行了展示
  • Python高級進階 007 pyqt5消息盒子QMessageBox
    提問:我們該如何實現我們自己需要的關閉時候的效果呢?重寫父類方法。重寫關閉事件的方法。可視化界面開發環境搭建python高級進階#002第一個pyqt5程序Python高級進階#003 pyqt5與qtdesigner對照分析Python高級進階#004
  • PyQt5按鈕類控制項
    GUI界面設計中,按鈕是最常用的觸發執行交互操作的控制項。
  • Python用PyQt5繪製多彩隨機散點圖,基本控制項之QPainter使用詳解
    Python用PyQt5製作顏色對話框,PyQt圖形界面編程之QColorDialogQt圖形界面編程之QFileDialog類,Python用PyQt5製作文件對話框Qt圖形界面編程之QFileDialog類,Python用PyQt5製作文件對話框
  • 盤點界面編程中那些常用控制項,詳解PyQt5中標籤控制項QLabel的使用
    歡迎大家關注QLabel控制項是PyQt中一個常用的控制項,它不僅可以作為一個佔位符顯示不可編輯的文本或圖片(展示GIF動畫圖片),還可以被用作提示標記為其他控制項;一些純文本、連結或富文本可以顯示在如何給控制項貼上標籤?QLabel類先來看下QLabel類的父類有哪些?
  • 引子,Python中PyQt5實現複製粘貼,程序界面如何訪問系統剪貼板
    前面內容,我們介紹了PyQt5中一些基本控制項及常用的繪圖設備類Python中PyQt5如何列印圖像界面,基本控制項應用,QPrinter類詳解Python用PyQt5製作窗體狀態欄,基本控制項QStatusBar使用方法詳解為界面添加功能豐富的工具箱,Python
  • 設計規範 | 詳解組件控制項結構體系:網絡異常類
    網絡切換:警示框、界面內嵌斷網情況:整頁提示、佔位符、toast提示、警示框提示、界面內嵌、tips提示弱網情況:整頁提示、佔位符、界面內嵌、tips提示依舊附上一張腦圖,組件控制項分類(如果單純通過組件控制項