我对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循环有效,并且标题在根元素下列出,但是后两个for循环根本不起作用。我究竟做错了什么?我仔细阅读了文档,所有建议都应该使用addChild(),但PyCharm表示:


“ QTreeWidget”对象没有属性“ addChild”


我在PyQt5中使用Python 3.6。谢谢!

最佳答案

可以将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_())


输出:

python - 如何从元组中填充QTreeWidget?-LMLPHP

关于python - 如何从元组中填充QTreeWidget?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47481370/

10-11 19:29