如何检查QlistWidget中的项目并在python pyqt5中对所选项目运行功能

问题描述

我有一个显示GUI应用程序的Python,该应用程序包含处理项目的 qlistwidget 用户可以在其中通过选中它们来选择这些项目,而不必使用它们来选择

itemSelectionChanged.connect.

我希望一旦用户检查了所需的项目,系统便将它们保存起来,以便在CHECKED项目上运行另一个功能

就像下面的图片一样:

enter image description here

这里什么也没发生。

直到现在,当用户选择选中的项目时,我便可以保存它们。

enter image description here

现在显示的结果是:

Checked items:  event_type,number_person

QlistWidget:

   self.header_list = QtWidgets.QListWidget(self)
     self.header_list.setobjectName("listWidget")
     self.header_list.setMaximumWidth(120)
     self.header_list.setSelectionMode(QAbstractItemView.MultiSelection)
     self.header_list.itemSelectionChanged.connect(self.selectionChanged)
     self.horizontallLayout.addWidget(self.header_list)

selectionChanged函数

def selectionChanged(self):
    checked = []
    for row in range(self.header_list.count()):
        item = self.header_list.item(row)
        if item.checkState():
            checked.append(item)
    print("Checked items: ",",".join(i.text() for i in checked))
    self.checked = [i.text() for i in checked]

那么可以替换 itemSelectionChanged 的事件侦听器是什么,以便仅检查项目而不选择项目即可保存结果。

解决方法

项目视图的检查状态存储在模型数据中,因此当状态更改时,数据也会相应地更改。幸运的是,QListWidget已经提供了itemChanged(item)

每当项目数据更改时,都会发出此信号。

显然,这意味着只要更改任何项目,就会发出信号,并且由于您仍要检查所有项目,因此您可以保留当前功能并将其连接到{{1} },而不是itemChanged

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...