qtreewig中的重复项

2024-04-25 13:51:06 发布

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

我用这篇文章中的帮助,用列表中的数据制作了一棵树。https://stackoverflow.com/a/33825934/4151075。 但是我有一个问题,它会给我的视图添加重复项。在

Dir1
    Dir2
        A.txt
    Dir2
        B.txt

我已经设法解决了顶级文件夹的问题,但内部文件夹有问题。
我很难访问items变量中的childs od childs。
Qt中没有用来查看路径列表的解析器吗?
谨致问候


Tags: 数据httpstxt文件夹com视图列表items
1条回答
网友
1楼 · 发布于 2024-04-25 13:51:06

我已经解决了我的问题,并创建了一个方法,该方法将路径列表作为参数,并返回QWidgetItems列表。在

def tree_widget_list(self, show_list):
    """
    Creates a list for updating tree widget
    :param show_list:
    :return:
    """
    items = []
    for item in show_list:
        item_parts = item.split('\\')

        entry = QtGui.QTreeWidgetItem(None, [item_parts[0]])
        items_text = [i.text(0) for i in items]
        if entry.text(0) not in items_text:
            parent_item = entry
        else:
            parent_index = items_text.index(entry.text(0))
            parent_item = items[parent_index]

        if len(item_parts) > 1:
            for i in item_parts[1:]:
                child_item = QtGui.QTreeWidgetItem(None, [i])
                child_list_text = [parent_item.child(i).text(0) for i in xrange(parent_item.childCount())]
                if child_item.text(0) in child_list_text:
                    child_index = child_list_text.index(child_item.text(0))
                    parent_item = parent_item.child(child_index)
                else:
                    parent_item.addChild(child_item)
                    parent_item = child_item
        items.append(entry) if entry.text(0) not in items_text else None
    return items

然后使用:

^{pr2}$

例如列表['MODULE\\designer\\qaxwidget.dll', 'MODULE\\designer\\qquickwidget.dll', 'MODULE\\designer\\qwebview.dll', 'MODULE\\iconengines\\qsvgicon.dll', 'MODULE\\imageformats\\qdds.dll', 'MODULE\\imageformats\\qgif.dll', 'MODULE\\imageformats\\qicns.dll', 'MODULE\\imageformats\\qico.dll', 'MODULE\\imageformats\\qjp2.dll', 'MODULE\\imageformats\\qjpeg.dll', 'MODULE\\imageformats\\qmng.dll', 'MODULE\\imageformats\\qsvg.dll', 'MODULE\\imageformats\\qtga.dll', 'MODULE\\imageformats\\qtiff.dll', 'MODULE\\imageformats\\qwbmp.dll', 'MODULE\\imageformats\\qwebp.dll', 'MODULE\\platforms\\qminimal.dll', 'MODULE\\platforms\\qoffscreen.dll', 'MODULE\\platforms\\qwindows.dll', 'MODULE\\printsupport\\windowsprintersupport.dll', 'MODULE\\sqldrivers\\qsqlite.dll', 'MODULE\\sqldrivers\\qsqlmysql.dll', 'MODULE\\sqldrivers\\qsqlodbc.dll', 'MODULE\\sqldrivers\\qsqlpsql.dll'] 我们有:

enter image description here

相关问题 更多 >