如何从元组填充QTreeWidget?

2024-05-20 13:16:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我对Python还不熟悉,所以请你容忍我。我试图从元组填充一个QTreeWidget,但是我似乎不能让它工作起来。在

TreeList = ({

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

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

我想创建一个QTreeWidget,它看起来像:

^{pr2}$

我一直在网上寻找解决办法,但我所尝试的似乎都不管用,最好的办法是什么。在

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循环起作用,头部列在根元素下,但第二个for循环根本不起作用。我做错什么了?我仔细阅读了文档,所有的东西都建议我使用addChild(),但是PyCharm说:

'QTreeWidget' object has no attribute 'addChild'

我在PyQt5中使用python3.6。谢谢!在


Tags: inforvalwidgetthisdontaddchilditem1
1条回答
网友
1楼 · 发布于 2024-05-20 13:16:14

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_())

输出:

enter image description here

相关问题 更多 >