[英]how to check item in QlistWidget and run function on the selected items in python pyqt5
我有一个 python,它显示一个 GUI 应用程序,其中包含处理项目的qlistwidget以及用户可以通过检查这些项目而不是使用它们来选择这些项目的地方
itemSelectionChanged.connect.
我希望一旦用户检查了所需的项目,系统就会保存它们,以便在 CHECKED 项目上运行另一个功能。
如下图所示:
这里什么也没有发生。
到目前为止,当用户选择它们时,我能够保存选中的项目。就像这样。
现在显示的结果是:
Checked items: event_type, number_person
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以保存结果的事件侦听器是什么,只检查项目而不选择它们。
项目视图的检查状态存储在模型数据中,因此当状态更改时,数据也会相应更改。 幸运的是 QListWidget 已经提供了itemChanged(item)
:
每当 item 的数据发生变化时,就会发出此信号。
这显然意味着每当任何项目发生更改时都会发出信号,并且由于您无论如何都要检查所有项目,因此您可以保留当前函数并将其连接到itemChanged
而不是itemSelectionChanged
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.