QTreeWidget使用小结

函数名功能
QTreeWidget创建一个树控件
setHeaderLabels设置行标签
QTreeWidgetItem(parent)创建树的子节点, parent:父节点
setText(self, p_int, p_str)p_int:列号
p_str: 文本
setIcon设置子节点图标
setColumnWidth设置列宽
setCheckState设置复选框
expandAll设置是否为展开状态
currentItem获得当前点击的树节点对象
text获得节点中的文本
selectedItems获得节点的所有对象,返回一个列表
import sys
from PyQt5.QtWidgets import *

class ModifyTree(QWidget):
    def __init__(self):
        super(ModifyTree, self).__init__()
        self.setWindowTitle("TreeWidget 例子")

        layout = QHBoxLayout()
        Buton1 = QPushButton("添加节点")
        Buton2 = QPushButton("修改节点")
        Buton3 = QPushButton("删除节点")

        layout.addWidget(Buton1)
        layout.addWidget(Buton2)
        layout.addWidget(Buton3)

        Buton1.clicked.connect(self.addNode)
        Buton2.clicked.connect(self.updateNode)
        Buton3.clicked.connect(self.deleteNode)

        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(child2)
        child3.setText(0, 'child3')
        child3.setText(1, '3')

        # 设置单击信号
        self.tree.clicked.connect(self.onTreeClicked)


        mainLayout = QVBoxLayout(self)
        mainLayout.addLayout(layout)
        mainLayout.addWidget(self.tree)
        self.setLayout(layout)

    # 设置单击事件
    def onTreeClicked(self):
        # 获得当前点击的项
        item = self.tree.currentItem()
        print("key: %s , value: %s" % (item.text(0), item.text(1)))

    # 添加节点
    def addNode(self):
        item = self.tree.currentItem()
        node = QTreeWidgetItem(item)
        node.setText(0, '新节点')
        node.setText(1, '数据')

    # 修改节点
    def updateNode(self):
        item = self.tree.currentItem()
        item.setText(0, '修改节点')
        item.setText(1, '修改的值')

    # 删除节点
    def deleteNode(self):
        # 选中要删除的节点
        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)
    main = ModifyTree()
    main.show()
    sys.exit(app.exec_())

效果如图
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值