微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何检查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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。