PyQt5 QListWidget – 获取当前选择的行

  • Post category:Python

好的。首先,QListWidget 是 PyQt5 提供的列表控件之一,它可以让用户通过单击列表中的项来选择该项,然后可以根据需要进行相关操作。本文目的是探究如何在 PyQt5 中获取当前 QListWidget 的选择行。以下是使用攻略和示例:

使用攻略

步骤一:创建 QListWidget 对象

from PyQt5.QtWidgets import QListWidget

list_widget = QListWidget()

步骤二:添加 QListWidgetItem

from PyQt5.QtWidgets import QListWidgetItem

list_widget.addItem(QListWidgetItem("Item 1"))
list_widget.addItem(QListWidgetItem("Item 2"))
list_widget.addItem(QListWidgetItem("Item 3"))

步骤三:获取当前选择的行

current_row = list_widget.currentRow()

其中,currentRow() 方法返回当前所选项在控件中的行号(从零开始)。如果没有选择任何项,则返回 -1

示例一

代码

import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem

class MyListWidget(QListWidget):

    def __init__(self):
        super().__init__()
        self.addItem(QListWidgetItem("Item 1"))
        self.addItem(QListWidgetItem("Item 2"))
        self.addItem(QListWidgetItem("Item 3"))
        self.itemSelectionChanged.connect(self.print_current_row)

    def print_current_row(self):
        current_row = self.currentRow()
        print(current_row)

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

解释

以上代码创建一个 QListWidget 对象,并添加三个 QListWidgetItem 到控件中。通过itemSelectionChanged 信号连接到 print_current_row 方法,该方法会在当前行发生更改时打印当前行号。

效果

当我们单击某个项目时,终端窗口中显示该项目在控件中的行号。

示例二

代码

import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QPushButton, QVBoxLayout, QWidget

class MyWidget(QWidget):

    def __init__(self):
        super().__init__()
        list_widget = QListWidget()
        # 添加数据
        list_widget.addItem(QListWidgetItem("Item 1"))
        list_widget.addItem(QListWidgetItem("Item 2"))
        list_widget.addItem(QListWidgetItem("Item 3"))
        # 添加按钮
        button = QPushButton("Get current row")
        button.clicked.connect(lambda: print(list_widget.currentRow()))
        # 添加布局
        layout = QVBoxLayout()
        layout.addWidget(list_widget)
        layout.addWidget(button)
        self.setLayout(layout)

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

解释

以上代码创建了一个 QWidget 对象,其中包含一个 QListWidget 控件和一个按钮。 当按钮被单击时,控制台将打印当前所选项在控件中的行号。

效果

当我们单击按钮时,控制台将打印当前所选项在控件中的行号。

以上就是如何在 PyQt5 中获取 QListWidget 的当前选择行的方法和示例。