使用树形小部件显示数据¶
如果你想显示以树形结构排列的数据,可以使用QTreeWidget
来实现。
请注意,使用QTreeWidget
并不是显示树形信息的唯一途径。你也可以创建一个数据模型并使用QTreeView
来显示它,但这不在本教程的范围内。
注意
这个小部件是一个您可以进一步自定义的现成版本。要了解更多关于Qt中的模型/视图架构,请参考其官方文档。
为这个应用程序导入
QTreeWidget
和QTreeWidgetItem
:import sys from PySide6.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem
定义一个包含项目结构的字典,以树的形式显示信息,每个项目的文件如下:
data = {"Project A": ["file_a.py", "file_a.txt", "something.xls"], "Project B": ["file_b.csv", "photo.jpg"], "Project C": []}
初始化
QApplication
单例:app = QApplication()
配置
QTreeWidget
以拥有两列,一列用于项目名称,另一列用于项目目录中文件的类型信息。您可以使用setHeaderLabels
设置列名,如下所述:tree = QTreeWidget() tree.setColumnCount(2) tree.setHeaderLabels(["Name", "Type"])
遍历数据结构,创建
QTreeWidgetItem
元素,并将相应的子项添加到每个父项中。 我们还仅为文件提取扩展名,并将它们添加到第二列中。 在构造函数中,您可以看到每个元素(QTreeWidgetItem
)都被添加到树的不同列中(QTreeWidget
)。items = [] for key, values in data.items(): item = QTreeWidgetItem([key]) for value in values: ext = value.split(".")[-1].upper() child = QTreeWidgetItem([value, ext]) item.addChild(child) items.append(item) tree.insertTopLevelItems(0, items)
显示树并执行
QApplication
。tree.show() sys.exit(app.exec())
最终的应用程序将如下所示:
