PyQt5 QListWidget – 获取当前项

  • Post category:Python

Sure! 首先,我们来了解一下什么是 PyQt5 QListWidget。

PyQt5 是一个开源的 Python 模块,是 Qt 应用程序框架的 Python 接口。Qt 是一个流行的 C++ 库,用于构建跨平台的 GUI 应用程序。PyQt5 是使用 Qt 应用程序框架开发的 Python GUI 库之一。QListWidget 是一个用于显示单列或多列列表的窗口小部件,它可以显示文本、图像等元素。

现在,我们来讲解一下如何获取 PyQt5 QListWidget 的当前项。

在 PyQt5 中,我们可以通过 QListWidget.currentItem() 方法来获取当前项。该方法返回 QListWidgetItem 类的对象。你可以使用该对象的方法和属性来访问当前项的文本、图像、数据等信息。例如,你可以使用 text() 方法获取当前项的文本。下面是一个简单的示例代码:

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

class MyListWidget(QListWidget):

    def __init__(self, parent=None):
        super().__init__(parent)

        self.addItem("Item 1")
        self.addItem("Item 2")
        self.addItem("Item 3")

        self.currentItemChanged.connect(self.selectionChanged)

    def selectionChanged(self, current, previous):
        if current:
            print(current.text())

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

在该示例中,我们创建了一个自定义的 QListWidget 子类 MyListWidget,该列表中包含三个项。我们使用 currentItemChanged 信号来连接槽函数 selectionChanged 函数。该函数将在当前项更改时被调用。在 selectionChanged 函数中,我们使用 currentItem() 方法获取当前项,然后使用 text() 方法获取当前项的文本并打印输出。

除此之外,我们还可以使用 QListWidget.currentRow() 方法来获取当前项的索引。该方法返回一个整数,表示当前项在列表中的第几行。下面是一个包含该方法的示例:

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

class MyListWidget(QListWidget):

    def __init__(self, parent=None):
        super().__init__(parent)

        self.addItem("Item 1")
        self.addItem("Item 2")
        self.addItem("Item 3")

        self.currentRowChanged.connect(self.selectionChanged)

    def selectionChanged(self, currentRow):
        print("Current row:", currentRow)

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

在该示例中,我们创建了一个与前面相同的 QListWidget 子类 MyListWidget,并使用 currentRowChanged 信号连接了槽函数 selectionChanged 函数。该函数将在当前行更改时被调用,并使用 currentRow() 方法获取当前行,并输出当前行的值。