目录

一.凡心所向,素履所往

二.树控件(QTreeWidget)基本用法

三.为树节点添加响应时间

四.增加,修改和删除树控件的节点

五.QTreeView控件与系统定制模式


一.凡心所向,素履所往

前天晚上朋友A请客,我欣然赴约,一起的还有朋友A的一个朋友B,是啊,每每见到大佬都不由得感慨一下,吾等太渺小了。

A是发小,和我同岁,但是比我大一级,但现在已经是国科大直博生在读,B是北邮的研一在读。饭间在讨论专业技术的事,因为都是搞计算机的,虽然方向不一样,但也算同行。

其间也谈谈人生,聊聊感触,但是听他们说起来项目,实习,比赛,收入等等,感觉真的不是一个层次的人,哎,变强的路上自闭真的是难免的。

饭后也是九点多了吧,我就直接住在A家了。

虽然我没有他们那样的本事,但是初心要贯彻到底,为自己喜欢的事情奋斗终身又何尝不是一件很酷的事呢。

今天玩了一天,傍晚回到家,饭后,写下此感,诸君共勉。

二.树控件(QTreeWidget)基本用法

代码:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *class BasicTreeWidget(QMainWindow):def __init__(self,parent=None):super(BasicTreeWidget, self).__init__(parent)self.setWindowTitle('树控件(QTreeWidget)的基本用法')self.resize(500,300)#树self.tree=QTreeWidget()#为树控件指定列数self.tree.setColumnCount(2)#指定列标签self.tree.setHeaderLabels(['Key','Value'])#根节点root=QTreeWidgetItem(self.tree)root.setText(0,'根节点') # 0代表第一列,即Key列root.setIcon(0,QIcon('../picture/bag/bag1.jpg')) #为节点设置图标self.tree.setColumnWidth(0,200)#第一列列宽设为200#添加子节点1child1=QTreeWidgetItem(root)child1.setText(0,'子节点1')#第一列Key为 子节点1child1.setText(1,'子节点1的数据')#第二列Value为 子节点1的数据child1.setIcon(0,QIcon('../picture/bag/bag2.jpg'))#设置子节点1开启复选框状态child1.setCheckState(0,Qt.Checked)# 添加子节点2child2=QTreeWidgetItem(root)child2.setText(0,'子节点2')child2.setIcon(0,QIcon('../picture/bag/bag3.jpg'))#为child2添加一个子节点child3=QTreeWidgetItem(child2)child3.setText(0,'子节点2-1')child3.setText(1,'新的值')child3.setIcon(0,QIcon('../picture/bag/bag4.jpg'))#默认所有节点都处于展开状态self.tree.expandAll()#将树控件设为中心控件,即树控件会自动铺满整个屏幕self.setCentralWidget(self.tree)if __name__=='__main__':app=QApplication(sys.argv)main=BasicTreeWidget()main.show()sys.exit(app.exec_())

运行结果:

三.为树节点添加响应时间

代码:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *class TreeEvent(QMainWindow):def __init__(self,parent=None):super(TreeEvent, self).__init__(parent)self.setWindowTitle('为树添加响应事件')self.resize(400,300)#树self.tree=QTreeWidget()#为树控件指定列数self.tree.setColumnCount(2)#指定列标签self.tree.setHeaderLabels(['Key','Value'])#根节点root=QTreeWidgetItem(self.tree)root.setText(0,'root') # 0代表第一列,即Key列,值为rootroot.setText(1,'0')#添加子节点child1child1=QTreeWidgetItem(root)child1.setText(0,'child1')child1.setText(1,'1')# 添加子节点child2child2=QTreeWidgetItem(root)child2.setText(0,'child2')child2.setText(1,'2')#为child2添加一个子节点child3child3=QTreeWidgetItem(child2)child3.setText(0,'child3')child3.setText(1,'3')#信号和槽self.tree.clicked.connect(self.onTreeClicked)#将树控件设为中心控件,即树控件会自动铺满整个屏幕self.setCentralWidget(self.tree)def onTreeClicked(self,index): #index是被点击节点的索引item=self.tree.currentItem()#获得当前单击项print('当前处于第%d行'%index.row())#输出当前行(自己父节点的第几个值)print('key=%s,value=%s'%(item.text(0),item.text(1)))print()if __name__=='__main__':app=QApplication(sys.argv)main=TreeEvent()main.show()sys.exit(app.exec_())

运行结果:

   eg:child1是root的第一个节点,故行数是0;child2是root的第二个节点,故行数是1;child3是child2的第一个节点,故行数是0

四.增加,修改和删除树控件的节点

代码:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *class ModifyTree(QWidget):def __init__(self,parent=None):super(ModifyTree, self).__init__(parent)self.setWindowTitle('增加修改和删除树控件中的节点')self.resize(400,300)operatorLayout=QHBoxLayout()#水平布局addBtn=QPushButton('添加节点')updateBtn=QPushButton('修改节点')deleteBtn=QPushButton('删除节点')operatorLayout.addWidget(addBtn)operatorLayout.addWidget(updateBtn)operatorLayout.addWidget(deleteBtn)addBtn.clicked.connect(self.addNode)updateBtn.clicked.connect(self.updateNode)deleteBtn.clicked.connect(self.deleteNode)# 树self.tree = QTreeWidget()# 为树控件指定列数self.tree.setColumnCount(2)# 指定列标签self.tree.setHeaderLabels(['Key', 'Value'])# 根节点root = QTreeWidgetItem(self.tree)root.setText(0, 'root')  # 0代表第一列,即Key列,值为rootroot.setText(1, '0')# 添加子节点child1child1 = QTreeWidgetItem(root)child1.setText(0, 'child1')child1.setText(1, '1')# 添加子节点child2child2 = QTreeWidgetItem(root)child2.setText(0, 'child2')child2.setText(1, '2')# 为child2添加一个子节点child3child3 = QTreeWidgetItem(child2)child3.setText(0, 'child3')child3.setText(1, '3')# 信号和槽self.tree.clicked.connect(self.onTreeClicked)mainLayout=QVBoxLayout(self)mainLayout.addLayout(operatorLayout)mainLayout.addWidget(self.tree)self.setLayout(mainLayout)def onTreeClicked(self, index):  # index是被点击节点的索引item = self.tree.currentItem()  # 获得当前单击项print('当前处于第%d行' % index.row())  # 输出当前行(自己父节点的第几个值)print('key=%s,value=%s' % (item.text(0), item.text(1)))print()def addNode(self):print('添加节点')item=self.tree.currentItem()# 获得当前结点print('当前节点是:',item)node=QTreeWidgetItem(item)node.setText(0,'新节点')node.setText(1,'新值')def updateNode(self):print('修改节点')item=self.tree.currentItem()item.setText(0,'修改节点')item.setText(1,'值已经被修改')def deleteNode(self):print('删除节点')#防止item是root时,root无父结点报错,要使用下面的写法rootFather=self.tree.invisibleRootItem()#获得根节点root的不可见的父节点for item in self.tree.selectedItems():#父节点不为空(item.parent() or rootFather).removeChild(item)if __name__=='__main__':app=QApplication(sys.argv)main=ModifyTree()main.show()sys.exit(app.exec_())

运行结果:

 

五.QTreeView控件与系统定制模式

一般复杂的树控件用QTreeView来写

代码:

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *if __name__=='__main__':app=QApplication(sys.argv)#显示目录结构的模型model=QDirModel()tree=QTreeView()tree.setModel(model)tree.setWindowTitle('QTreeView')tree.resize(600,400)tree.show()sys.exit(app.exec_())

运行结果:

PyQt5入门(十四)树控件QTreeWidget相关推荐

  1. 基于springboot+vue(thymeleaf)+mysql下的自创音乐网站平台--CrushMusic(开发日志十四)--audio控件重写音乐播放

    本次花了很大精力去完成了播放界面,虽然歌词同步这里没完成,但后续还是可以完善的,这次我重写了audio控件,让audio是自己想要的样式,先看成果图.  这个界面参考的是酷狗音乐网页版的布局,感觉自己 ...

  2. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(十四) 精灵控件横空出世!①

    在上一节中,我们实现了地图牵引式移动,同时还遗留着一个小尾巴:主角和障碍物该如何跟随着地图的移动而移动? 上节中有点到,只要在地图移动的同时,时时根据主角等对象物体的X,Y坐标进行相对于地图的X,Y坐 ...

  3. C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(十四) 精灵控件横空出世!①

    在上一节中,我们实现了地图牵引式移动,同时还遗留着一个小尾巴:主角和障碍物该如何跟随着地图的移动而移动? 上节中有点到,只要在地图移动的同时,时时根据主角等对象物体的X,Y坐标进行相对于地图的X,Y坐 ...

  4. 六、PyQt5 QTreeWidget操作,获取树控件所有2级目录内容

    新建pyqt5工程目录,添加树控件QTreeWidget,添加4个按钮,分别是添加 .删除.修改.打印树内容按钮,并添加按钮单击消息响应函数. 适用于QTreeWidget树控件只有2级目录内容情况 ...

  5. [原创]FineUI秘密花园(二十四) — 树控件之数据绑定

    上一篇文章我们介绍了树控件的基本用法,不过都是通过标签来声明树控件的结构,本章我们会详细讲解如何在后台绑定树控件. 绑定到XmlDocument 下面通过一个简单的例子来看如何将XmlDocument ...

  6. SAP UI5 应用开发教程之五十六 - SAP UI5 树控件(tree)的开发试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 教程目录 SAP UI5 本地开发环境的搭建 SAP UI5 应用开发教程之一:Hello World SAP UI5 应用开发教程之二:SAP U ...

  7. pyqt 实现控件移除_pyqt5:删除树控件(QTreeWidget)的子节点/根节点

    主要代码 # 删除控件树子节点/根节点 def deleteItem(self): try: # 尝试删除子节点(通过其父节点,调用removeChild函数进行删除) currNode = self ...

  8. SAP UI5 应用开发教程之五十六 - SAP UI5 树控件(tree)的开发

    本步骤我们来学习用 SAP UI5 来显示一种在计算机应用程序开发领域非常有用的数据结构:树. 本步骤的实现源代码:https://github.com/wangzixi-diablo/ui5-tut ...

  9. QT常用控件(三)——QTreeWidget(树控件),QTableWidget控件

    QTreeWidget树控件 实例: #include "layout.h" #pragma execution_character_set("utf-8") ...

最新文章

  1. Prometheus 对比 Zabbix
  2. leetcode算法第8题
  3. Nginx 之五: Nginx服务器的负载均衡、缓存与动静分离功能
  4. POJ 1523 SPF
  5. shell脚本操作mysql数据库,使用mysql的-e参数可以执行各种sql的(创建,删除,增,删,改、查)等各种操作
  6. html转excel有问题,html转excel
  7. java解析xml中文字符乱码_各种Java中文乱码的处理方法
  8. Google的电话面试
  9. Android ListView常用用法(结合长按、数据库等)
  10. 自学python顺序-Python学习之调换顺序
  11. C# 基础,JOject JArray构造json对象
  12. lasso模型可以用spss_互助问答第65期: 静态面板模型可以用GMM估计吗?
  13. [北航软工]技术规格说明书
  14. mybatisplus代码生成器构建项目以及lambd链式编程
  15. 计算机课怎么加水印,word文档怎么加水印
  16. 4步讲解一维数组传参与二维数组传参
  17. 冉宝的每日一题--8月12日--子序列有进步啦
  18. 手机远程连接linux软件下载,远程连接linux服务器软件下载
  19. 【JavaSE】图书馆系统制作--JavaSE简易知识整合
  20. springboot启动报jar包加载异常问题解决

热门文章

  1. 用css动画画一个不规则的渐变动态圆
  2. qt5 -- qt中关于大小的类的学习笔记
  3. 【mysql】Mysql查看连接数(连接总数、活跃数、最大并发数)
  4. latex 设置多页目录第一页页码位置不再居中
  5. nginx 301和302的区别与设置
  6. 解决虚拟机驱动下载失败问题
  7. Qt基础教程:对齐方式
  8. Apache——Centos操作系统下 apache启动、停止、重启命令
  9. vue 移入显示_vue 鼠标移入移出事件执行多次(尤其ie)
  10. libnuma详解(A NUMA API for LINUX)