如何在QlistWidget中检查项并在python pyqt5中对所选项运行函数

2024-09-29 21:35:07 发布

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

我有一个python,它显示一个GUI应用程序,其中包括处理项目的qlistwidget,用户可以通过检查项目来选择这些项目,而不是使用

itemSelectionChanged.connect.

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

如下图所示:

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)

选择已更改的功能:

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,以保存只检查项目而不选择项目的结果呢


Tags: 项目用户inself功能forconnectitems
1条回答
网友
1楼 · 发布于 2024-09-29 21:35:07

项目视图的检查状态存储在模型数据中,因此当状态更改时,数据也会相应更改。QListWidget已提供^{}

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

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

相关问题 更多 >

    热门问题