如何从元组填充 QTreeWidget?

How to populate QTreeWidget from tuple?

我是 Python 的新手,所以请多多包涵。我正在尝试从元组填充 QTreeWidget,但我似乎无法让它工作。

TreeList = ({

    'Header1': ((
        'Item1',
        'Item2',
    )),

    'Header2': ((
        'Item1',
        'Item2'
    ))
})

我的想法是创建一个如下所示的 QTreeWidget:

ROOT
  |
  |-- Header1
  |    |-- Item1
  |    |-- Item2
  |
  |-- Header2
       |-- Item1
       |-- Item2

我一直在网上搜索以寻找解决方案,但我尝试的任何方法似乎都不起作用,最好的解决方法是什么。

widget = QTreeWidget()

for i in TreeList:
    val = QTreeWidgetItem([i])
    widget.addTopLevelItem(val)

for i in TreeList['Header1']
    val = QTreeWidgetItem([i])
    widget.Header1.addChild(val)  # DONT THINK THIS IS RIGHT

for i in TreeList['Header2']
    val = QTreeWidgetItem([i])
    widget.Header2.addChild(val)  # DONT THINK THIS IS RIGHT

第一个 for-loop 有效,headers 列在根元素下,但后两个 for-loop 根本不起作用。我究竟做错了什么?我筛选了文档,一切都表明我应该使用 addChild() 但 PyCharm 说:

'QTreeWidget' object has no attribute 'addChild'

我正在使用 Python 3.6 和 PyQt5。谢谢!

一个 QTreeWidgetItem 可以直接传递给父级,但它需要一个列表或元组,如下所示:

import sys

from PyQt5.QtWidgets import *

TreeList = ({

    'Header1': ((
        'Item11',
        'Item12',
    )),

    'Header2': ((
        'Item21',
        'Item22'
    ))
})

app = QApplication(sys.argv)

tree = QTreeWidget()

for key, value in TreeList.items():
    root = QTreeWidgetItem(tree, [key])
    for val in value:
        item = QTreeWidgetItem([val])
        root.addChild(item)
        # Or
        # QTreeWidgetItem(root, [val])

tree.expandAll()
tree.show()
sys.exit(app.exec_())

输出: