我如何获取事件处理程序(“插槽”)中QListWidget的所有选定项,该事件处理程序在用户与列表进行交互时被激活?换句话说,当用户执行某项操作时(例如在列表中选择一个新的选择),我需要有可用选择项的完整列表。
到目前为止,我尝试使用的是什么QListWidget.currentItemChanged
,然后尝试使用来获取所有选定的列表项QListWidget.selectedItems()
。这种方法的问题在于,从selectedItems()
函数返回的列表直到退出我已连接的事件处理程序后才更新至currentItemChanged
我正在寻找的解决方案必须与“ MultiSelection”一起使用(可以同时选择多个列表项)
感谢帮助和友善的问候,托德
您必须使用该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']