PyQt5 QListWidget – 获取选择模式

  • Post category:Python

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完整使用攻略。