PyQt5的QListWidget是用于显示和编辑简单列表的一个组件。它支持不同的选择模式,如单选模式、多选模式等。这里将详细讲解如何获取并使用不同选择模式。
1. 获取选择模式
1.1 单选模式
在单选模式下,用户只能选择一个列表项。
在QListWidget中设置单选模式的代码如下:
listWidget.setSelectionMode(QAbstractItemView.SingleSelection)
1.2 多选模式
在多选模式下,用户可以选择多个列表项。
在QListWidget中设置多选模式的代码如下:
listWidget.setSelectionMode(QAbstractItemView.MultiSelection)
1.3 扩展选择模式
在扩展选择模式下,用户可以选择多个列表项,也可以通过Shift键或Ctrl键来扩展选择。
在QListWidget中设置扩展选择模式的代码如下:
listWidget.setSelectionMode(QAbstractItemView.ExtendedSelection)
2. 示例说明
2.1 单选模式示例
在单选模式下,我们可以使用currentRow()方法来获取当前选中的行号。
如下面这个例子,当用户点击listWidget列表中的任一项时,将会在控制台输出选中行的行号:
from PyQt5.QtWidgets import QApplication, QListWidget
app = QApplication([])
listWidget = QListWidget()
listWidget.addItem('lydia')
listWidget.addItem('mike')
listWidget.addItem('john')
listWidget.setSelectionMode(QAbstractItemView.SingleSelection) # 单选模式
def on_item_clicked():
print(listWidget.currentRow()) # 获取当前选中的行号
listWidget.itemClicked.connect(on_item_clicked)
listWidget.show()
app.exec_()
2.2 多选模式示例
在多选模式下,我们可以使用selectedItems()方法来获取所有选中的项。
如下面这个例子,用户可以通过点击或按住Ctrl键进行多选,在控制台输出所有选中项的文本内容:
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem
app = QApplication([])
listWidget = QListWidget()
listWidget.addItem(QListWidgetItem('lydia'))
listWidget.addItem(QListWidgetItem('mike'))
listWidget.addItem(QListWidgetItem('john'))
listWidget.setSelectionMode(QAbstractItemView.MultiSelection) # 多选模式
def on_item_selection_changed():
items = listWidget.selectedItems() # 获取所有选中项
for item in items:
print(item.text()) # 输出所有选中项的文本内容
listWidget.itemSelectionChanged.connect(on_item_selection_changed)
listWidget.show()
app.exec_()
以上就是获取和使用不同选择模式的PyQt5 QListWidget完整使用攻略。