【问题标题】:how to check item in QlistWidget and run function on the selected items in python pyqt5如何检查 QlistWidget 中的项目并在 python pyqt5 中的选定项目上运行函数
【发布时间】:2020-09-17 05:57:44
【问题描述】:

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

itemSelectionChanged.connect.

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

如下图:

这里什么都没有发生。

到目前为止,当用户选择它们时,我能够保存选中的项目。就像这样。

这里现在显示的结果是:

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 以保存仅检查项目而不选择它们的结果。

【问题讨论】:

    标签: python pyqt5 qlistwidget qlistwidgetitem


    【解决方案1】:

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

    只要项目的数据发生变化,就会发出这个信号。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多