如果你想要在窗口中显示用树形结构表示的数据,可以使用 QTreeWidget 组件。

注意:使用 QTreeWidget 不是显示树形结构数据的唯一途径。你可以创建数据模型,然后使用 QTreeView 组件来显示它,但这不在该教程的范围之内。

下面是使用 QTreeWidget 组件显示树形结构数据的具体步骤:

  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 并将其设置为含有2列。一列表示名称,另一列表示文件类型。可以像下面这样使用 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())
    

程序的运行结果如下:

在这里插入图片描述


更多关于 Qt for Python 文章,可以查看 PySide6 专栏。

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐