PyQT QTreeWidget迭代

Nun*_*cjo 3 python pyqt qtreewidget

我在QTreeWidget中有两列,一列代表网址列表,第二列代表结果.我已在第一列中加载了URL列表,现在我想迭代此列表,并在迭代期间更改第二列中的文本.怎么做到这一点?

rec*_*dev 8

您可以调用QTreeWidget.invisibleRootItem()来接收根项,然后使用QTreeWidgetItem API迭代这些项.

例:

root = self.treeWidget.invisibleRootItem()
child_count = root.childCount()
for i in range(child_count):
    item = root.child(i)
    url = item.text(0) # text at first (0) column
    item.setText(1, 'result from %s' % url) # update result column (1)
Run Code Online (Sandbox Code Playgroud)

我假设self.treeWidget是由以下人群填充:

self.treeWidget.setColumnCount(2) # two columns, url result
for i in range(10):
    self.treeWidget.insertTopLevelItem(i, QTreeWidgetItem(QStringList('url %s' % i)))
Run Code Online (Sandbox Code Playgroud)

  • 仅通过阅读官方文档实际上是不可能发现这一点的。迭代树项的传统方法是通过 [`QTreeWidgetItemIterator` 辅助类](https://riverbankcomputing.com/pipermail/pyqt/20​​14-May/034315.html) – 遗憾的是,它没有提供*仅*顶部迭代的方法-level 树项,因此在这种常见用例中不适用。我们是否可以集体承认 Qt API 非常晦涩难懂,如果没有 StackOverflow 就毫无用处?(*是的。是的,我们可以。*) (2认同)