pyqt5中,实现多层级选择
时间: 2023-06-27 11:06:06 浏览: 124
在PyQt5中实现多层级选择,可以使用QTreeView控件。这个控件可以显示一个树形结构,每个节点可以展开或者折叠,以显示其子节点。
下面是一个简单的例子,演示如何在QTreeView中实现多层级选择:
```python
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
class TreeView(QTreeView):
def __init__(self, parent=None):
super(TreeView, self).__init__(parent)
model = QStandardItemModel()
rootNode = model.invisibleRootItem()
# 添加第一层节点
parentItem1 = QStandardItem('parentItem1')
rootNode.appendRow(parentItem1)
# 添加第二层节点
childItem1 = QStandardItem('childItem1')
childItem2 = QStandardItem('childItem2')
parentItem1.appendRow(childItem1)
parentItem1.appendRow(childItem2)
# 添加第三层节点
grandchildItem1 = QStandardItem('grandchildItem1')
grandchildItem2 = QStandardItem('grandchildItem2')
childItem1.appendRow(grandchildItem1)
childItem1.appendRow(grandchildItem2)
self.setModel(model)
self.setUniformRowHeights(True)
self.setRootIsDecorated(False)
self.setItemsExpandable(True)
self.setExpandsOnDoubleClick(False)
self.setSelectionMode(QAbstractItemView.ExtendedSelection)
if __name__ == '__main__':
app = QApplication([])
tree = TreeView()
tree.show()
app.exec_()
```
在这个例子中,我们通过QStandardItemModel创建了一个树形结构,并添加了三层节点。然后,我们将这个模型设置到QTreeView控件中,并设置了一些控件的属性,例如行高、是否显示根节点等等。最后,我们将选择模式设置为QAbstractItemView.ExtendedSelection,以允许多选。
当你运行这个程序时,你会看到一个包含多层级节点的树形结构。你可以通过单击节点来选择它们,也可以按住Ctrl键或Shift键来进行多选。
阅读全文