如何检查 QlistWidget 中的项目和 运行 函数对 python pyqt5 中的选定项目

how to check item in QlistWidget and run function on the selected items in python pyqt5

我有一个 python 显示一个 GUI 应用程序,其中包括 qlistwidget 来处理项目,用户可以通过检查这些项目 select 和不是 select 他们使用

itemSelectionChanged.connect.

我希望一旦用户检查了所需的项目,系统就会保存它们,以便 运行 已检查项目上的另一个功能。

喜欢下图:

这里什么也没有发生。

直到现在我可以在用户 select them.like this.

时保存选中的项目

这里现在显示的结果是:

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 的事件侦听器,以便仅检查项目而不是 selecting 来保存结果。

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

This signal is emitted whenever the data of item has changed.

这显然意味着每当 任何 项发生更改时都会发出信号,并且由于您无论如何都要检查所有项,因此您可以保留当前功能并连接它itemChanged 而不是 itemSelectionChanged.