文章目录

  • 1、简介
  • 2、简单实例显示本机文件结构
    • 1)显示本机文件结构目录
    • 2)功能实现
  • 3、显示自定义文件结构
    • 1)展示
    • 2)功能代码
  • 4、添加展开文件的点击事件
    • 1)展示
    • 2)、功能展示
  • 5、文件节点的增删改
    • 1)展示
    • 2)、功能实现

1、简介

QTreeWidget 类实现了树形结构。

2、简单实例显示本机文件结构

1)显示本机文件结构目录

2)功能实现
#!/usr/bin/env python3'''【简介】PyQT5中 QTreeView 例子'''import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *if __name__ == '__main__':app =  QApplication(sys.argv)    #Window系统提供的模式  model = QDirModel()  #创建一个QtreeView部件  tree = QTreeView()  #为部件添加模式  tree.setModel(model)  tree.setWindowTitle( "QTreeView 例子" )  tree.resize(640, 480)  tree.show()  sys.exit(app.exec_())  

3、显示自定义文件结构

1)展示

2)功能代码
#!/usr/bin/env python3'''【简介】PyQT5中 QTreeWidget 例子'''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()# 设置列数self.tree.setColumnCount(2)# 设置头的标题self.tree.setHeaderLabels(['Key','Value'])# 设置根节点root= QTreeWidgetItem(self.tree)root.setText(0,'root')root.setIcon(0,QIcon("./images/root.png"))# 设置列宽self.tree.setColumnWidth(0, 150)### 设置节点的背景颜色#brush_red = QBrush(Qt.red)#root.setBackground(0, brush_red)#brush_green = QBrush(Qt.green)#root.setBackground(1, brush_green) # 设置子节点1child1 = QTreeWidgetItem(root)child1.setText(0,'child1')child1.setText(1,'ios')child1.setIcon(0,QIcon("./images/IOS.png"))child1.setCheckState(0, Qt.Checked)  #设置选项已被选中状态# 设置子节点2child2 = QTreeWidgetItem(root)child2.setText(0,'child2')child2.setText(1,'')child2.setIcon(0,QIcon("./images/android.png"))# 设置子节点3,子节点2的子节点child3 = QTreeWidgetItem(child2)child3.setText(0,'child3')child3.setText(1,'android')child3.setIcon(0,QIcon("./images/music.png"))#为tree增加顶级项目self.tree.addTopLevelItem(root)# 结点全部展开self.tree.expandAll()self.setCentralWidget(self.tree)  if __name__ == '__main__':app = QApplication(sys.argv)tree = TreeWidgetDemo()tree.show()sys.exit(app.exec_())

4、添加展开文件的点击事件

1)展示

2)、功能展示
#!/usr/bin/env python3'''【简介】PyQT5中 QTreeWidget 例子'''from PyQt5.QtWidgets import *
import sysclass TreeWidgetDemo(QMainWindow):   def __init__(self,parent=None):super(TreeWidgetDemo,self).__init__(parent)self.setWindowTitle('TreeWidget 例子')self.tree = QTreeWidget()# 设置列数self.tree.setColumnCount(2)# 设置头的标题self.tree.setHeaderLabels(['Key','Value'])root= QTreeWidgetItem(self.tree)root.setText(0,'root')root.setText(1,'0')child1 = QTreeWidgetItem(root)child1.setText(0,'child1')child1.setText(1,'1')child2 = QTreeWidgetItem(root)child2.setText(0,'child2')child2.setText(1,'2')child3 = QTreeWidgetItem(root)child3.setText(0,'child3')child3.setText(1,'3')       child4 = QTreeWidgetItem(child3)child4.setText(0,'child4')child4.setText(1,'4')child5 = QTreeWidgetItem(child3)child5.setText(0,'child5')child5.setText(1,'5')self.tree.addTopLevelItem(root)self.tree.clicked.connect( self.onTreeClicked ) #绑定点击事件self.setCentralWidget(self.tree)  def onTreeClicked(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_())

5、文件节点的增删改

1)展示

2)、功能实现
#!/usr/bin/env python3'''【简介】PyQT5中 QTreeWidget 例子'''import sys
from PyQt5.QtWidgets import *
#from PyQt5.QtGui import QIcon ,  QBrush , QColor
#from PyQt5.QtCore import Qt class TreeWidgetDemo(QWidget):   def __init__(self,parent=None):super(TreeWidgetDemo,self).__init__(parent)self.setWindowTitle('TreeWidget 例子')operatorLayout = QHBoxLayout()addBtn = QPushButton("添加节点")updateBtn =  QPushButton("修改节点")delBtn = QPushButton("删除节点")     operatorLayout.addWidget(addBtn)operatorLayout.addWidget(updateBtn)operatorLayout.addWidget(delBtn)# 按钮的信号槽连接addBtn.clicked.connect(self.addTreeNodeBtn )updateBtn.clicked.connect(self.updateTreeNodeBtn )delBtn.clicked.connect(self.delTreeNodeBtn )     self.tree = QTreeWidget(self)# 设置列数self.tree.setColumnCount(2)# 设置头的标题self.tree.setHeaderLabels(['Key','Value'])root= QTreeWidgetItem(self.tree)root.setText(0,'root')root.setText(1,'0')child1 = QTreeWidgetItem(root)child1.setText(0,'child1')child1.setText(1,'1')child2 = QTreeWidgetItem(root)child2.setText(0,'child2')child2.setText(1,'2')child3 = QTreeWidgetItem(root)child3.setText(0,'child3')child3.setText(1,'3')       child4 = QTreeWidgetItem(child3)child4.setText(0,'child4')child4.setText(1,'4')child5 = QTreeWidgetItem(child3)child5.setText(0,'child5')child5.setText(1,'5')self.tree.addTopLevelItem(root)self.tree.clicked.connect( self.onTreeClicked )mainLayout = QVBoxLayout(self);mainLayout.addLayout(operatorLayout);mainLayout.addWidget(self.tree);     self.setLayout(mainLayout)      #节点点击事件def onTreeClicked(self, qmodelindex):item = self.tree.currentItem()print("key=%s ,value=%s" % (item.text(0), item.text(1)))#添加节点def addTreeNodeBtn(self):print('--- addTreeNodeBtn ---')item = self.tree.currentItem()node = QTreeWidgetItem(item)node.setText(0,'newNode')node.setText(1,'10') # 节点更新def updateTreeNodeBtn(self):print('--- updateTreeNodeBtn ---')item = self.tree.currentItem()item.setText(0,'updateNode')item.setText(1,'20')       #删除节点def delTreeNodeBtn(self):print('--- delTreeNodeBtn ---')item = self.tree.currentItem()root = self.tree.invisibleRootItem()for item in self.tree.selectedItems():(item.parent() or root).removeChild(item)if __name__ == '__main__':app = QApplication(sys.argv)tree = TreeWidgetDemo()tree.show()sys.exit(app.exec_())

文件参考:
PyQt 快速开发与实践

本人郑重声明,本博客所著文章、图片版权归权利人持有,本博只做学习交流分享所用,不做任何商业用途。访问者可將本博提供的內容或服务用于个人学习、研究或欣赏,不得用于商业使用。同時,访问者应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人的合法权利;如果用于商业用途,须征得相关权利人的书面授权。若以上文章、图片的原作者不愿意在此展示內容,请及时通知在下,將及时予以刪除。

pyq5 QTreeView 树形目录结构相关推荐

  1. Java实现遍历N级树形目录结构

    最近挺忙,一直在做项目,然后有个树形目录结构需要返回给前端,这里给大家说一下实现的思路. 具体达到的效果类似: 一级目录A: 二级目录A: 三级目录: 四级目录: 文件.txt 二级目录B: 文件1. ...

  2. java遍历树_Java实现遍历N级树形目录结构

    最近挺忙,一直在做项目,然后有个树形目录结构需要返回给前端,这里给大家说一下实现的思路. 具体达到的效果类似: 一级目录A: 二级目录A: 三级目录: 四级目录: 文件.txt 二级目录B: 文件1. ...

  3. Linux目录结构——树形目录结构

    Linux目录结构--树形目录结构 根目录:所有目录分区.目录.文件等位置起点 整个树形目录结构中,使用独立的一个"/" 常见的子目录:   /root   /bin   /boo ...

  4. android 树形目录结构的实现(包含源码)

    1.效果如图 ,老板的需求: 1.各种群按照树形目录展开 2.点击列表可以收缩展开 3.选中后进行筛选 2.分析下思路 每个数据都应该有个根节点,也就是上级目录.确定了上级目录就可以找到当前数据对应的 ...

  5. linux树形目录结构存放,Linux目录结构

    Linux下的文件系统为树形结构,入口为/ 树形结构下的文件目录: 无论哪个版本的Linux系统,都有这些目录,这些目录应该是标准的.各个Linux发行版本会存在一些小小的差异,但总体来说,还是大体差 ...

  6. vue 树形目录结构

    原先使用的是Ztree,后来因为更多的定制化要求,还是手写一个算了 <template><div><menu-tree :nodes="nodes" ...

  7. Linux 文件系统的目录结构

    1. / 文件系统的入口,最高一级目录: 2. /bin 基础系统所需要的命令位于此目录,是最小系统所需要的命令,如:ls, cp, mkdir等. 这个目录中的文件都是可执行的,一般的用户都可以使用 ...

  8. 5、Linux系统的目录结构

    Windows目录结构 系统路径:C:\Windows 软件安装目录:一般放在D:\Linux目录逻辑上所有的目录只有一个顶点/ (根),/是所有目录的起点./根下面,类似的是一个倒挂着的树一样的层次 ...

  9. 4.1.3 OS之文件目录目录结构(单级-两级-多级-无环图)、索引节点FCB瘦身

    文章目录 0.思维导图 1.文件控制块 对目录的操作 2.单级目录结构 3.两级目录结构 4.多级目录结构(树形目录结构) 5.无环图目录结构 6.索引节点(FCB的改进)瘦身 0.思维导图 1.文件 ...

  10. 【操作系统】文件管理(三)—— 文件的目录结构

    [操作系统]文件管理(三)-- 文件的目录结构 一.文件控制块(FCB) 二.索引结点(FCB的改进) 三.目录结构 1. 单级目录结构 2. 两级目录结构 3. 多级目录结构(树形目录结构) 4. ...

最新文章

  1. 光伏电站或成辅助服务市场“输家”
  2. Dynamics CRM2013/2015 检索实体属性的两种方式
  3. Login failed with an access denied error.
  4. 计算机技术在办公自动化中的应用,计算机技术在办公自动化中的应用浅析.doc...
  5. html 前端分页代码怎么写,前端js写分页
  6. Ubuntu 16.04安装SQLite Browser操作SQLite数据库
  7. python找人_python之找最后一个人
  8. C#拾遗系列(5):泛型委托
  9. 怎样删除Weblogic Domain?
  10. 三个有用的SQL辅助工具
  11. ArcView Image Analyst v1.0.rar
  12. 易语言 Sqlite表.读字段值 失败的解决方法
  13. java的I/O流,开发教学第二章作业
  14. Android开发两年,我要跳槽去阿里巴巴了,做个阶段总结,flutterrow高度对齐
  15. Linux系统下LightDM详解
  16. HTML的基本结构标签(html,head,title,body)
  17. 【JZOJ A组】黑暗之魂(darksoul)
  18. 容联云:实现异步 手机短信验证码
  19. 零基础了解Https-https的安全策略
  20. BZOJ 4605: 崂山白花蛇草水 树套树 权值线段树套kdtree

热门文章

  1. WebService(一):工作原理
  2. 机械制图之平面图形的尺寸分析
  3. 用matlab实现灰色预测gm11模型,用MATLAB实现灰色预测GM11模型
  4. vultarget-a红日靶场全面解析(完整版)
  5. FOSSID(开源代码检测工具)
  6. office和flash计算机课程,Powerpoint和Flash制作教学课件技巧
  7. 驱动精灵w8ndows xp sp2,爱普生Epson TM-L60II打印机驱动官方正式版下载,适用于winxp,winvista,win7,win8,win10-驱动精灵...
  8. 将ip电话注册到服务器上,华为IP电话配置步骤.doc
  9. 最新Apicloud+Vue开发App专题(完整)
  10. 解决Python包下载慢/超时的方法