当前位置:  开发笔记 > 编程语言 > 正文

当用户与列表交互时,如何获取QListWidget的所有选定项?

如何解决《当用户与列表交互时,如何获取QListWidget的所有选定项?》经验,为你挑选了1个好方法。

我如何获取事件处理程序(“插槽”)中QListWidget的所有选定项,该事件处理程序在用户与列表进行交互时被激活?换句话说,当用户执行某项操作时(例如在列表中选择一个新的选择),我需要有可用选择项的完整列表。

到目前为止,我尝试使用的是什么QListWidget.currentItemChanged,然后尝试使用来获取所有选定的列表项QListWidget.selectedItems()。这种方法的问题在于,从selectedItems()函数返回的列表直到退出我已连接的事件处理程序后才更新至currentItemChanged

我正在寻找的解决方案必须与“ MultiSelection”一起使用(可以同时选择多个列表项)

感谢帮助和友善的问候,托德



1> eyllanesc..:

您必须使用该itemSelectionChanged信号,当选择任何项目时,该信号将被激活。

import sys

from PyQt5.QtWidgets import QAbstractItemView, QApplication, QListWidget, QListWidgetItem, QVBoxLayout, QWidget


class Widget(QWidget):
    def __init__(self, parent=None):
        super(Widget, self).__init__(parent=parent)
        self.layout = QVBoxLayout(self)
        self.listWidget = QListWidget(self)
        self.layout.addWidget(self.listWidget)
        self.listWidget.setSelectionMode(QAbstractItemView.MultiSelection)
        self.listWidget.itemSelectionChanged.connect(self.on_change)

        for i in range(10):
            item = QListWidgetItem()
            item.setText(str(i))
            self.listWidget.addItem(item)

    def on_change(self):
        print("start")
        print([item.text() for item in self.listWidget.selectedItems()])


if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = Widget()
    w.show()
    sys.exit(app.exec_())

输出:

start
['2']
start
['2', '3']
start
['2', '3', '4']
start
['2', '3', '4', '6']

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有