sun*_*ata 4 python pyqt qlistwidget pyqt5
我如何获取事件处理程序(“插槽”)中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_())
Run Code Online (Sandbox Code Playgroud)
输出:
start
['2']
start
['2', '3']
start
['2', '3', '4']
start
['2', '3', '4', '6']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6044 次 |
| 最近记录: |