如果你想要在窗口中显示用树形结构表示的数据,可以使用 QTreeWidget
组件。
注意:使用
QTreeWidget
不是显示树形结构数据的唯一途径。你可以创建数据模型,然后使用QTreeView
组件来显示它,但这不在该教程的范围之内。
下面是使用 QTreeWidget
组件显示树形结构数据的具体步骤:
-
引用
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
并将其设置为含有2列。一列表示名称,另一列表示文件类型。可以像下面这样使用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())
程序的运行结果如下:
更多关于 Qt for Python 文章,可以查看 PySide6 专栏。