pyqt5 qtreewidget 节点操作

QTreeWidget 添加 修改和删除树控件中的节点 的案例


   
   
  1. import sys
  2. from PyQt5.QtCore import Qt
  3. from PyQt5.QtGui import QIcon
  4. from PyQt5.QtWidgets import QApplication, QWidget, QTableWidget, QTableWidgetItem, QMenu, QVBoxLayout, QMainWindow, \
  5. QTreeWidget, QTreeWidgetItem, QHBoxLayout, QPushButton, QInputDialog
  6. '''
  7. QTreeWidget 添加 修改和删除树控件中的节点 的案例
  8. '''
  9. class ModifyTreeDemo( QWidget):
  10. def __init__( self):
  11. super().__init__()
  12. self.initUI()
  13. def initUI( self):
  14. # 设置定位和左上角坐标
  15. self.setGeometry( 300, 300, 460, 360)
  16. # 设置窗口标题
  17. self.setWindowTitle( 'QTreeWidget 添加 修改和删除树控件中的节点 的演示')
  18. # 设置窗口图标
  19. # self.setWindowIcon(QIcon('../web.ico'))
  20. operatorLayout = QHBoxLayout()
  21. addBtn = QPushButton( '添加节点')
  22. updateBtn = QPushButton( '修改节点')
  23. deleteBtn = QPushButton( '删除节点')
  24. operatorLayout.addWidget(addBtn)
  25. operatorLayout.addWidget(updateBtn)
  26. operatorLayout.addWidget(deleteBtn)
  27. addBtn.clicked.connect(self.addNode)
  28. updateBtn.clicked.connect(self.updateNode)
  29. deleteBtn.clicked.connect(self.deleteNode)
  30. self.tree = QTreeWidget()
  31. # 为树控件指定列数
  32. self.tree.setColumnCount( 2)
  33. # 指定列标签
  34. self.tree.setHeaderLabels([ "Key", "Value"])
  35. # 添加根节点
  36. root = QTreeWidgetItem(self.tree)
  37. root.setText( 0, '根节点')
  38. root.setIcon( 0, QIcon( '../web.ico'))
  39. # self.tree.setColumnWidth(0, 160)
  40. # 添加子节点
  41. child1 = QTreeWidgetItem(root)
  42. child1.setText( 0, '子节点1')
  43. child1.setText( 1, '1')
  44. # child1.setIcon(0, QIcon('../web.ico'))
  45. # child1.setCheckState(0, Qt.Checked)
  46. # 添加子节点2
  47. child2 = QTreeWidgetItem(root)
  48. child2.setText( 0, '子节点2')
  49. child2.setText( 1, '2')
  50. child2.setIcon( 0, QIcon( '../web.ico'))
  51. # 为child2添加一个子节点
  52. child3 = QTreeWidgetItem(child2)
  53. child3.setText( 0, '子节点3')
  54. child3.setText( 1, '3')
  55. # child3.setIcon(0, QIcon('../web.ico'))
  56. # 展开所有节点
  57. self.tree.expandAll()
  58. self.tree.clicked.connect(self.onTreeClicked)
  59. # self.setCentralWidget(self.tree)
  60. mainLayout = QVBoxLayout(self)
  61. mainLayout.addLayout(operatorLayout)
  62. mainLayout.addWidget(self.tree)
  63. self.setLayout(mainLayout)
  64. def onTreeClicked( self,index):
  65. item = self.tree.currentItem()
  66. print(index.row())
  67. print( 'key=%s,value=%s' %(item.text( 0),item.text( 1)))
  68. def addNode( self):
  69. print( '添加节点')
  70. item = self.tree.currentItem()
  71. print(item)
  72. node = QTreeWidgetItem(item)
  73. node.setText( 0, '新节点')
  74. node.setText( 1, '新值')
  75. def updateNode( self):
  76. print( '修改节点')
  77. item = self.tree.currentItem()
  78. text, ok = QInputDialog.getText(self, '输入节点名称', '节点名称:')
  79. if ok and text:
  80. item.setText( 0, text)
  81. text, ok = QInputDialog.getText(self, '输入节点值', '节点得值:')
  82. if ok and text:
  83. item.setText( 1, text)
  84. def deleteNode( self):
  85. print( '删除节点')
  86. item = self.tree.currentItem()
  87. # 固定根节点
  88. root = self.tree.invisibleRootItem()
  89. for item in self.tree.selectedItems():
  90. (item.parent() or root).removeChild(item)
  91. if __name__ == '__main__':
  92. app = QApplication(sys.argv)
  93. # 设置应用图标
  94. app.setWindowIcon(QIcon( '../web.ico'))
  95. w = ModifyTreeDemo()
  96. w.show()
  97. sys.exit(app.exec_())

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值