专栏首页sktjpython pyqt5 QTreeWidget 动态添加节点

python pyqt5 QTreeWidget 动态添加节点

image.png

!/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_())

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python pyqt5 QTreeWidget 点击事件

    from PyQt5.QtWidgets import * import sys

    用户5760343
  • python pyqt5 QTreeWidget

    import sys from PyQt5.QtWidgets import * from PyQt5.QtGui import QIcon, QBrush...

    用户5760343
  • IOS移动开发从入门到精通 视图UIView、层CALayer(2)

    或者修改 rootViewController参数 2、弹出框: import UIKit class ViewController:UIViewCont...

    用户5760343
  • python实现决策树

    熵:用于表示随机变量不确定性的度量 。假设X是一个取值有限的随机变量,其概率分布为:

    绝命生
  • python实现二叉树的创建和遍历

    #coding:utf-8 #author:Elvis class TreeNode(object): def __init__(self): ...

    致Great
  • PyTorch版CenterNet数据加载解析

    本文主要解读CenterNet如何加载数据,并将标注信息转化为CenterNet规定的高斯分布的形式。

    BBuf
  • ReactiveCocoa,最受欢迎的iOS函数响应式编程库(2.5版),没有之一!

    简介 项目主页: ReactiveCocoa 实例下载: https://github.com/ios122/ios122 简评: 最受欢迎,最有价值的iOS响...

    ios122
  • 『深度概念』原理图解代码FPN Feature Pyramid Networks

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明...

    小宋是呢
  • 深入理解JavaScript系列(29):设计模式之装饰者模式

    装饰者提供比继承更有弹性的替代方案。 装饰者用用于包装同接口的对象,不仅允许你向方法添加行为,而且还可以将方法设置成原始对象调用(例如装饰者的构造函数)。

    用户4962466
  • python项目练习三:万能的XML

    这个项目的名称与其叫做万能的XML不如叫做自动构建网站,根据一份XML文件,生成对应目录结构的网站,不过只有html还是太过于简单了,如果要是可以连带生成css...

    the5fire

扫码关注云+社区

领取腾讯云代金券