📜  PyQt5 QListWidget – 设置选择行为(1)

📅  最后修改于: 2023-12-03 15:18:49.057000             🧑  作者: Mango

PyQt5 QListWidget – 设置选择行为

在PyQt5中,通过QListWidget控件,用户可以选择一行或多行,以执行一些特定的任务。在本文中,我们将学习如何设置PyQt5 QListWidget控件的选择行为。

设置选择模式

QListWidget控件允许开发者设置多种选择模式:

  • SingleSelection:允许仅选择一行。
  • MultiSelection:允许选择多行。
  • ExtendedSelection:允许使用SHIFT或CTRL选择多个行。
设置单行选择模式

要设置单行选择模式,开发者需要使用setSelectionMode方法,并将QAbstractItemView.SingleSelection作为参数传递。

list_widget.setSelectionMode(QAbstractItemView.SingleSelection)
设置多行选择模式

要设置多行选择模式,开发者需要使用setSelectionMode方法,并将QAbstractItemView.MultiSelection作为参数传递。

list_widget.setSelectionMode(QAbstractItemView.MultiSelection)
设置扩展选择模式

要设置扩展选择模式,开发者需要使用setSelectionMode方法,并将QAbstractItemView.ExtendedSelection作为参数传递。

list_widget.setSelectionMode(QAbstractItemView.ExtendedSelection)
设置选择行为

开发者也可以设置选择行为,该行为决定了在选择行时,哪些部分应该被高亮显示。

设置只高亮项目名称

要设置只高亮项目名称,开发者需要使用setSelectionBehavior方法,并将QAbstractItemView.SelectItems作为参数传递。

list_widget.setSelectionBehavior(QAbstractItemView.SelectItems)
设置高亮整行

要设置高亮整行,开发者需要使用setSelectionBehavior方法,并将QAbstractItemView.SelectRows作为参数传递。

list_widget.setSelectionBehavior(QAbstractItemView.SelectRows)
示例代码
import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QAbstractItemView

class DemoList(QListWidget):
    def __init__(self):
        super().__init__()
        self.resize(200, 200)
        self.itemSelectionChanged.connect(self.print_selected)

        # 添加项目
        for i in range(5):
            text = 'Item {}'.format(i)
            item = QListWidgetItem(text, self)
            item.setCheckState(False)

        # 只高亮项目名称
        self.setSelectionBehavior(QAbstractItemView.SelectItems)

        # 多行选择模式
        self.setSelectionMode(QAbstractItemView.MultiSelection)

    def print_selected(self):
        selection = [item.text() for item in self.selectedItems()]
        print(selection)

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

该代码创建了一个QListWidget,并设置了多行选择模式和只高亮项目名称的选择行为。print_selected方法会在选择行发生变化时打印出选择的项目名称。