如何识别 PySide2 QListWidget 中选中的复选框

问题描述 投票:0回答:1

我试图在

QListWidget
中找到选中的项目,但是,我不确定如何识别正在选中的项目,因为我没有为每个单独的复选框使用名称。基本上,我有多个未知字符串,它们被制成复选框并放入
QListWidget
中。然后我试图找出这些复选框中的哪一个已被选中。

这就是我目前制作复选框的方式(但如果更好的话我可以使用另一个小部件)

thing2 = ['asdsa', 'dasdas', 'sdasdas', 'asdsa', 'sdasdad']
for item in thing2:
    vbox.addWidget(QCheckBox(item))

它创建了一个如下所示的应用程序: vbox with multiple stacked checkboxes

但是,我无法判断正在选中哪个复选框(因为我想对选中的项目执行操作)

到目前为止,我已经尝试使用 QListWidget 来更好地组织它,我原本以为我可以像普通的 python 列表一样引用每个项目,但是我仍然无法检查勾选了哪个复选框。

https://github.com/yjg30737/pyqt-checkbox-file-list-widget

这基本上就是我想要做的,选择一些复选框,并有一个允许我删除项目的按钮,但是,我无法使其与普通文本一起使用。 (我检查了安装的文件,我认为它只适用于文件)

我还尝试过使用模型视图控制器代码,这是网上向我推荐的,因为据说将其转移到小部件上要容易得多,但我发现它非常令人困惑(并且没有成功)所以如果可能的话我宁愿不使用它。

我可以使用任何方法来让我的程序识别状态更改,从而允许我修改更改的项目吗?如果它完全改变了代码我就可以了。

python pyside2 qlistwidget qcheckbox
1个回答
0
投票

将复选框初始化为列表。

self.rows = []
checkboxes = []
    for i in range(len(self.rows)):
        checkboxes.append(QtWidgets.QCheckBox())
        self.listWidget.addItem(checkboxes[i])

单击时:

for i in range(0, self.listWidget.count()):
    if(self.listWidget.item(i).isChecked()):
       self.selected.append(i)

这会将所有选定的 ID 返回到

rows

我基于我的一个项目中的两列

QTableWidget
构建了这段代码,它们基本上做了同样的事情。如果您可以使用
QTableWidget
代替,我可以给您生产代码。

© www.soinside.com 2019 - 2024. All rights reserved.