📅  最后修改于: 2023-12-03 15:03:58.248000             🧑  作者: Mango
PyQt5 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()
函数就会被调用。