📜  PyQt5 QListWidget – 当前项目更改信号(1)

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

PyQt5 QListWidget – 当前项目更改信号

PyQt5 QListWidget是一种显示项目列表的小部件,可以让用户单选或多选项目。使用QListWidget时,我们可以连接一个信号,以便在项目更改时发出通知。这篇文章将介绍如何连接当前项目更改信号,并实现相应的函数以处理信号。

QListWidget的当前项目更改信号

QListWidget的当前项目更改信号称为currentItemChanged。它在用户单击或按下向上/向下箭头键时发出。该信号返回两个参数:先前选定的项目和当前选定的项目。因此,我们可以使用这两个参数来检查哪个项目被选中。

实现当前项目更改信号的处理程序

要实现当前项目更改信号的处理程序,我们需要使用currentItemChanged信号和连接函数QListWidget.currentItemChanged.connect()。我们需要在此信号下实现我们的自定义功能。

例如,以下代码将定义一个名为on_current_item_changed()的函数。当currentItemChanged信号被触发时,该函数将被执行:

self.listwidget.currentItemChanged.connect(self.on_current_item_changed)

def on_current_item_changed(self, current, previous):
    if current is not None:
        print('当前选中项目的文本是:', current.text())
    else:
        print('没有选择任何项目')

以上代码将打印current.text()中的当前选定的项目的文本或“没有选择任何项目”,具体取决于用户是否选择了任何项目。

完整示例代码
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QVBoxLayout

class ListWidgetDemo(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.listwidget = QListWidget(self)
        self.listwidget.addItem('Item 1')
        self.listwidget.addItem('Item 2')
        self.listwidget.addItem('Item 3')
        self.listwidget.addItem('Item 4')

        vbox = QVBoxLayout(self)
        vbox.addWidget(self.listwidget)

        self.listwidget.currentItemChanged.connect(self.on_current_item_changed)

        self.setWindowTitle('QListWidget 示例')
        self.setGeometry(300, 300, 250, 150)
        self.show()

    def on_current_item_changed(self, current, previous):
        if current is not None:
            print('当前选中项目的文本是:', current.text())
        else:
            print('没有选择任何项目')

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = ListWidgetDemo()
    sys.exit(app.exec_())

此示例创建一个QListWidget,它包含四个项目。在任何时候,只要更改项目的选择状态,on_current_item_changed()函数就会被调用。