编程语言
首页 > 编程语言> > python-PyQt-获取所有在QTreeWidget中选中的列表

python-PyQt-获取所有在QTreeWidget中选中的列表

作者:互联网

我正在构建一个简单的应用程序,以打开一个数据文件夹并绘制该数据.导入数据会更新QTreeWidget,该QTreeWidget显示可以绘制哪些信号.例如:

使用以下命令导入数据后,将填充QTreeWidget:

def update_treeWidget(self):
    headers = self.df['voltage recording'].columns[1:]
    sweeps = self.df['voltage recording'].index.levels[0]

    for header in headers:
        parent_item = QtWidgets.QTreeWidgetItem(self.treeWidget)
        parent_item.setCheckState(0, QtCore.Qt.Unchecked)
        parent_item.setText(0, header)

        for sweep in sweeps:
            child_item = QtWidgets.QTreeWidgetItem(parent_item)
            child_item.setCheckState(0, QtCore.Qt.Unchecked)
            child_item.setText(0, sweep)

但是,对于我现在尚不清楚的是,我将如何检查树中任何项目的已检查状态.

所以我的两个问题是:

>我将如何引用该树的任何部分以检查其检查状态(父级或父级的各个子级)
>有没有一种方法可以简单地返回所有选中框的列表?如果我能找到问题1的答案,那么我显然可以创建一个函数,每次选中一个框时,该框就会添加到列表中(如果未选中,则从列表中删除).但是由于这里的目标只是绘制所有检查过的信号,所以对我而言(从逻辑上来讲,无论从逻辑上来说),最直接的事情是单击“绘制”按钮后,界面会首先检查以查看选中了哪些信号框,然后绘制这些信号.

在所有示例中,我似乎都明确声明了树项(即item_1,item_2),因此引用它们很简单.但是,由于我是如何填充树的,所以我不知道该怎么做.

如果这首先是不正确的方法来填充树,请让我知道和/或向我指出更正确的方法.

谢谢

编辑:

这非常类似于:
PyQT QTreeWidget iterating

这就是我的回答依据.

解决方法:

弄清楚了.这至少达到了我需要实现的目标:

def find_checked(self):
    checked = dict()
    root = self.treeWidget.invisibleRootItem()
    signal_count = root.childCount()

    for i in range(signal_count):
        signal = root.child(i)
        checked_sweeps = list()
        num_children = signal.childCount()

        for n in range(num_children):
            child = signal.child(n)

            if child.checkState(0) == QtCore.Qt.Checked:
                checked_sweeps.append(child.text(0))

        checked[signal.text(0)] = checked_sweeps

    return checked

标签:qtreewidget,pyqt,qt-signals,python
来源: https://codeday.me/bug/20191029/1956294.html