使用树形小部件显示数据#

如果您想显示按树形组织的数据,请使用QTreeWidget来实现。

请注意,使用QTreeWidget并不是显示树状信息的唯一方法。您还可以创建一个数据模型并使用QTreeView显示它,但这超出了此教程的范围。

注意

此小部件是基于您可以进一步自定义的模板。有关Qt中的模型/视图架构的更多信息,请参阅其官方文档

  1. 为此应用程序导入QTreeWidgetQTreeWidgetItem

    import sys
    from PySide6.QtWidgets import QApplication, QTreeWidget, QTreeWidgetItem
    
  2. 定义一个字典,包含项目结构,将信息显示为树状,项目中的文件属于每个项目

    data = {"Project A": ["file_a.py", "file_a.txt", "something.xls"],
            "Project B": ["file_b.csv", "photo.jpg"],
            "Project C": []}
    
  3. 初始化QApplication单例

    app = QApplication()
    
  4. 配置QTreeWidget具有两列,一列为项目名称,另一列为项目目录中文件的项类型信息。您可以使用setHeaderLabels设置列名,如下所述

    tree = QTreeWidget()
    tree.setColumnCount(2)
    tree.setHeaderLabels(["Name", "Type"])
    
  5. 遍历数据结构,创建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)
    
  6. 显示树并执行QApplication

    tree.show()
    sys.exit(app.exec())
    

最终的应用程序将如下所示

QTreeWidget example