PyQt5中用python怎么为字典里的节点添加复选框
时间: 2023-10-21 21:03:24 浏览: 93
你好!可以使用QTreeWidgetItem类来实现该功能。以下是一个简单的示例:
```
import sys
from PyQt5.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem, QWidget, QCheckBox
class Tree(QWidget):
def __init__(self):
super().__init__()
self.tree = QTreeWidget(self)
self.tree.setColumnCount(2)
self.tree.setHeaderLabels(['Key', 'Value'])
data = {
'node1': {
'subnode1': 'value1',
'subnode2': 'value2'
},
'node2': 'value3',
'node3': 'value4'
}
self.addItems(self.tree, data)
layout = QHBoxLayout(self)
layout.addWidget(self.tree)
self.setLayout(layout)
def addItems(self, parent, elements):
for key, value in elements.items():
if type(value) is dict:
node = QTreeWidgetItem(parent, [key])
self.addItems(node, value)
else:
node = QTreeWidgetItem(parent, [key, value])
checkbox = QCheckBox()
self.tree.setItemWidget(node, 0, checkbox)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Tree()
ex.show()
sys.exit(app.exec_())
```
在这个例子中,我们首先创建了一个QTreeWidget对象,然后将字典中的所有键和值都添加到树结构中。在添加节点时,如果它的值是一个字典,我们就递归调用addItems()函数来将子节点添加到它下面。对于每个节点,我们都创建了一个复选框,并使用setItemWidget()方法将其添加到第一列中。这样,用户就可以在节点旁边看到一个复选框了。
阅读全文