PyQt5中的QListWidget类提供了一种显示项目列表的方式。QListWidget中的每个项目都是一个QListWidgetItem对象,这个对象可以包含图标、文本等信息。在实际开发中,我们可能需要在QListWidget中设置当前选中的项目,本文就来详细介绍如何设置当前项目。
1. 设置当前项目
QListWidget中的当前项目可以通过setCurrentItem方法来设置,其使用方法如下:
QListWidget.setCurrentItem (QListWidgetItem *item, QFlags<Qt::ItemFlag> command=Qt::NoModifier)
其中,item为要设置为当前项目的QListWidgetItem对象,command是一个参数,用于设置具体的状态。
例如,我们可以创建一个QListWidget并设置几个项目,然后通过setCurrentItem设置其中一个项目为当前项目。示例代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QWidget, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
listwidget = QListWidget(self)
items = ['Item 1', 'Item 2', 'Item 3']
for i in items:
item = QListWidgetItem(i)
listwidget.addItem(item)
# 设置第二个项目为当前项目
item = listwidget.item(1)
listwidget.setCurrentItem(item)
vbox.addWidget(listwidget)
self.setLayout(vbox)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('QListWidget Set Current Item')
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在上面的示例中,我们创建了一个QListWidget,并将其添加到主窗口中。然后,我们将三个项目添加到QListWidget中,并将第二个项目设置为当前项目。程序运行后,QListWidget将自动选中第二个项目。
2. 监听当前项目的变化
除了设置当前项目,我们还可以监听当前项目的变化。我们可以通过QListWidget的currentItemChanged信号来监听当前项目的变化。
currentItemChanged信号声明如下:
QListWidget.currentItemChanged(QListWidgetItem *current, QListWidgetItem *previous)
该信号带有两个参数,current为新的当前项目,previous为旧的当前项目。
例如,我们可以创建一个QListWidget,然后监听其currentItemChanged信号,在该信号触发时输出当前项目的文本信息。示例代码如下:
import sys
from PyQt5.QtWidgets import QApplication, QListWidget, QListWidgetItem, QWidget, QVBoxLayout
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
self.listwidget = QListWidget(self)
items = ['Item 1', 'Item 2', 'Item 3']
for i in items:
item = QListWidgetItem(i)
self.listwidget.addItem(item)
# 监听QListWidget的currentItemChanged信号
self.listwidget.currentItemChanged.connect(self.on_currentItemChanged)
vbox.addWidget(self.listwidget)
self.setLayout(vbox)
self.setGeometry(300, 300, 250, 150)
self.setWindowTitle('QListWidget Set Current Item')
self.show()
def on_currentItemChanged(self, current, previous):
if current:
print("Current item: ", current.text())
else:
print("No current item.")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在上面的示例中,我们创建一个QListWidget并将其添加到主窗口中。然后,我们将三个项目添加到QListWidget中,并在QListWidget的currentItemChanged信号中输出当前项目的文本信息。程序运行后,当选中不同的项目时,输出的文本信息也会相应发生变化。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PyQt5 QListWidget – 设置当前项目 - Python技术站