最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python GUI庫(kù)圖形界面開(kāi)發(fā)之PyQt5樹(shù)形結(jié)構(gòu)控件QTreeWidget詳細(xì)使用方法與實(shí)例

 更新時(shí)間:2020年03月02日 09:03:21   作者:jia666666  
這篇文章主要介紹了python GUI庫(kù)圖形界面開(kāi)發(fā)PyQt5樹(shù)形結(jié)構(gòu)控件QTreeWidget詳細(xì)使用方法與實(shí)例,需要的朋友可以參考下

PyQt5樹(shù)形結(jié)構(gòu)控件QTreeWidget簡(jiǎn)介

QTreeWidget 類(lèi)根據(jù)預(yù)設(shè)的模型提供樹(shù)形顯示控件。

QTreeWidget 使用類(lèi)似于 QListView 類(lèi)的方式提供一種典型的基于 item 的樹(shù)形交互方法類(lèi),該類(lèi)基于QT的“模型/視圖”結(jié)構(gòu),提供了默認(rèn)的模型來(lái)支撐 item 的顯示,這些 item 類(lèi)為 QTreeWidgetItem 類(lèi)。

如果不需要靈活的“模型/視圖”框架,可以使用QTreeWidget 來(lái)創(chuàng)建有層級(jí)關(guān)系的樹(shù)形結(jié)構(gòu)。當(dāng)把標(biāo)準(zhǔn) item 模型結(jié)合 QTreeView 使用時(shí),可以得到更靈活的使用方法,從而把“數(shù)據(jù)”和“顯示”分離開(kāi)。

QTreeWidget類(lèi)中的常用方法

方法 描述
setColumnWidth(int column,int width) 將指定列的寬度設(shè)置為給定的值
Column:指定的列
width:指定的寬度
insertTopLevelItems() 在視圖的頂層索引中引入項(xiàng)目的列表
expandAll() 展開(kāi)所有節(jié)點(diǎn)的樹(shù)形節(jié)點(diǎn)
invisibleRootItem() 返回樹(shù)形控件中不可見(jiàn)的根選項(xiàng)(Root Item)
selectionItems() 返回所有選定的非隱藏項(xiàng)目的列表內(nèi)

QTreeWidgetItem類(lèi)中常用的方法

方法 描述
addChild() 將子項(xiàng)追加到子列表中
setText() 設(shè)置顯示的節(jié)點(diǎn)文本
Text() 返回顯示的節(jié)點(diǎn)文本
setCheckState(column.state) 設(shè)置指定列的選中狀態(tài):
Qt.Checked:節(jié)點(diǎn)選中
Qt.Unchecked:節(jié)點(diǎn)沒(méi)有選中
setIcon(column,icon) 在指定的列中顯示圖標(biāo)

QTreeWidget樹(shù)形結(jié)構(gòu)控件的實(shí)例

樹(shù)形結(jié)構(gòu)是通過(guò)QTreeWidget和QTreeWidgetItem類(lèi)實(shí)現(xiàn)的,其中QTreeWidgetItem類(lèi)實(shí)現(xiàn)了節(jié)點(diǎn)的添加,其完整代碼如下

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import QIcon, QBrush, QColor
from PyQt5.QtCore import Qt


class TreeWidgetDemo(QMainWindow):
  def __init__(self, parent=None):
    super(TreeWidgetDemo, self).__init__(parent)
    self.setWindowTitle('TreeWidget 例子')

    self.tree=QTreeWidget()
    #設(shè)置列數(shù)
    self.tree.setColumnCount(2)
    #設(shè)置樹(shù)形控件頭部的標(biāo)題
    self.tree.setHeaderLabels(['Key','Value'])

    #設(shè)置根節(jié)點(diǎn)
    root=QTreeWidgetItem(self.tree)
    root.setText(0,'Root')
    root.setIcon(0,QIcon('./images/root.png'))

    # todo 優(yōu)化2 設(shè)置根節(jié)點(diǎn)的背景顏色
    brush_red=QBrush(Qt.red)
    root.setBackground(0,brush_red)
    brush_blue=QBrush(Qt.blue)
    root.setBackground(1,brush_blue)

    #設(shè)置樹(shù)形控件的列的寬度
    self.tree.setColumnWidth(0,150)

    #設(shè)置子節(jié)點(diǎn)1
    child1=QTreeWidgetItem()
    child1.setText(0,'child1')
    child1.setText(1,'ios')
    child1.setIcon(0,QIcon('./images/IOS.png'))

    #todo 優(yōu)化1 設(shè)置節(jié)點(diǎn)的狀態(tài)
    child1.setCheckState(0,Qt.Checked)

    root.addChild(child1)


    #設(shè)置子節(jié)點(diǎn)2
    child2=QTreeWidgetItem(root)
    child2.setText(0,'child2')
    child2.setText(1,'')
    child2.setIcon(0,QIcon('./images/android.png'))

    #設(shè)置子節(jié)點(diǎn)3
    child3=QTreeWidgetItem(child2)
    child3.setText(0,'child3')
    child3.setText(1,'android')
    child3.setIcon(0,QIcon('./images/music.png'))



    #加載根節(jié)點(diǎn)的所有屬性與子控件
    self.tree.addTopLevelItem(root)

    #TODO 優(yōu)化3 給節(jié)點(diǎn)添加響應(yīng)事件
    self.tree.clicked.connect(self.onClicked)


    #節(jié)點(diǎn)全部展開(kāi)
    self.tree.expandAll()
    self.setCentralWidget(self.tree)

  def onClicked(self,qmodeLindex):
    item=self.tree.currentItem()
    print('Key=%s,value=%s'%(item.text(0),item.text(1)))

if __name__ == '__main__':
  app = QApplication(sys.argv)
  tree = TreeWidgetDemo()
  tree.show()
  sys.exit(app.exec_())

初始運(yùn)行圖如下

優(yōu)化一:設(shè)置節(jié)點(diǎn)的狀態(tài)

這里添加了child1的選中狀態(tài)

 child1.setCheckState(0,Qt.Checked)

優(yōu)化二:設(shè)置節(jié)點(diǎn)的背景顏色

這里設(shè)置了根節(jié)點(diǎn)的背景顏色

brush_red=QBrush(Qt.red)

        root.setBackground(0,brush_red)

        brush_blue=QBrush(Qt.blue)

        root.setBackground(1,brush_blue)

優(yōu)化三:給節(jié)點(diǎn)添加響應(yīng)事件

點(diǎn)擊,會(huì)在控制臺(tái)輸出當(dāng)前地key值與value值

self.tree.clicked.connect(self.onClicked)

def onClicked(self,qmodeLindex):

        item=self.tree.currentItem()

        print('Key=%s,value=%s'%(item.text(0),item.text(1)))

系統(tǒng)定制模式實(shí)例

在上面的例子中,QTreeWidgetItem類(lèi)的節(jié)點(diǎn)是一個(gè)個(gè)添加上去的,這樣有時(shí)很不方便,特別是窗口產(chǎn)生比較復(fù)雜的樹(shù)形結(jié)構(gòu)時(shí),一般都是通過(guò)QTreeView類(lèi)來(lái)實(shí)現(xiàn)的,而不是QTreeWidget類(lèi),QTreeView和QTreeWidget類(lèi)最大的區(qū)別就是,QTreeView類(lèi)可以使用操作系統(tǒng)提供的定制模式,比如文件系統(tǒng)盤(pán)的樹(shù)列表

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *

if __name__ == '__main__':
  app=QApplication(sys.argv)

  #window系統(tǒng)提供的模式
  model=QDirModel()
  #創(chuàng)建一個(gè)QTreeView的控件
  tree=QTreeView()
  #為控件添加模式
  tree.setModel(model)

  tree.setWindowTitle('QTreeView例子')
  tree.resize(640,480)

  tree.show()
  sys.exit(app.exec_())

本文主要講解了PyQt5樹(shù)形結(jié)構(gòu)控件QTreeWidget詳細(xì)使用方法與實(shí)例,更多關(guān)于PyQt5控件使用知識(shí)請(qǐng)查看下面的相關(guān)鏈接

相關(guān)文章

  • Python利用matplotlib實(shí)現(xiàn)繪制密度散點(diǎn)圖

    Python利用matplotlib實(shí)現(xiàn)繪制密度散點(diǎn)圖

    這篇文章主要介紹了如何基于Python語(yǔ)言的matplotlib模塊,對(duì)Excel表格文件中的指定數(shù)據(jù)加以密度散點(diǎn)圖繪制的方法,有需要的小伙伴可以參考下
    2024-04-04
  • numpy排序與集合運(yùn)算用法示例

    numpy排序與集合運(yùn)算用法示例

    這篇文章主要介紹了numpy排序與集合運(yùn)算用法示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 10分鐘用Python快速搭建全文搜索引擎詳解流程

    10分鐘用Python快速搭建全文搜索引擎詳解流程

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,只學(xué)書(shū)上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章帶你用python花10分鐘迅速搭建一個(gè)好玩的Python全文搜索引擎,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-10-10
  • 淺談python的輸入輸出,注釋?zhuān)緮?shù)據(jù)類(lèi)型

    淺談python的輸入輸出,注釋?zhuān)緮?shù)據(jù)類(lèi)型

    這篇文章主要介紹了python的輸入輸出,注釋?zhuān)緮?shù)據(jù)類(lèi)型,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • python?readlines函數(shù)示例解析

    python?readlines函數(shù)示例解析

    readlines()是Python文件對(duì)象的一個(gè)方法,用于讀取文件中的所有行并將它們作為一個(gè)字符串列表返回,這篇文章主要介紹了python?readlines函數(shù)解析,需要的朋友可以參考下
    2023-06-06
  • python3利用Axes3D庫(kù)畫(huà)3D模型圖

    python3利用Axes3D庫(kù)畫(huà)3D模型圖

    這篇文章主要為大家詳細(xì)介紹了python3利用Axes3D庫(kù)畫(huà)3D模型圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • Python打印scrapy蜘蛛抓取樹(shù)結(jié)構(gòu)的方法

    Python打印scrapy蜘蛛抓取樹(shù)結(jié)構(gòu)的方法

    這篇文章主要介紹了Python打印scrapy蜘蛛抓取樹(shù)結(jié)構(gòu)的方法,實(shí)例分析了打印scrapy蜘蛛抓取樹(shù)結(jié)構(gòu)的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04
  • 使用tensorflow進(jìn)行音樂(lè)類(lèi)型的分類(lèi)

    使用tensorflow進(jìn)行音樂(lè)類(lèi)型的分類(lèi)

    這篇文章主要介紹了使用tensorflow進(jìn)行音樂(lè)類(lèi)型的分類(lèi),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • python中的單引號(hào)雙引號(hào)區(qū)別知識(shí)點(diǎn)總結(jié)

    python中的單引號(hào)雙引號(hào)區(qū)別知識(shí)點(diǎn)總結(jié)

    在本篇文章中小編給大家整理了關(guān)于python中的單引號(hào)雙引號(hào)有什么區(qū)別的相關(guān)知識(shí)點(diǎn)以及實(shí)例代碼,需要的朋友們參考下。
    2019-06-06
  • python中圖形庫(kù)turtle庫(kù)詳解(適用于計(jì)算機(jī)二級(jí))

    python中圖形庫(kù)turtle庫(kù)詳解(適用于計(jì)算機(jī)二級(jí))

    Turtle庫(kù)是Python語(yǔ)言中的一個(gè)圖形庫(kù),可以用來(lái)繪制各種形狀,如線條、矩形、圓形等等,下面這篇文章主要給大家介紹了關(guān)于python中圖形庫(kù)turtle庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08

最新評(píng)論

崇信县| 廉江市| 郑州市| 八宿县| 舒城县| 施甸县| 泾源县| 习水县| 金乡县| 青冈县| 麻栗坡县| 墨脱县| 寿光市| 千阳县| 武隆县| 股票| 嘉定区| 简阳市| 西昌市| 新邵县| 玛纳斯县| 囊谦县| 如东县| 寿光市| 凌海市| 浪卡子县| 攀枝花市| 安图县| 绥中县| 兴仁县| 金坛市| 右玉县| 马公市| 荣成市| 手游| 花莲市| 兴仁县| 平乡县| 宜兰市| 鹤山市| 开远市|