PyQt QListWidget
最后修改于 2023 年 8 月 24 日
在本文中,我们将展示如何使用 QListWidget。
访问 PyQt6 教程,或列出所有 PyQt 教程。
,阅读PyQt QListWidget
QListWidget
提供了一个基于项的列表控件。
addItem
函数在列表末尾添加一个新项。使用 addItems
函数,可以插入多个项。列表中的项数可以通过 count
函数获取。takeItem
函数从列表中移除一个项。
列表中的当前项可以通过 currentItem
找到,并通过 setCurrentItem
进行更改。
PyQt QListWidget 简单示例
在下面的示例中,我们创建一个以 QListWidget
为特色的简单示例。
#!/usr/bin/python import sys from PyQt6.QtWidgets import (QListWidget, QWidget, QMessageBox, QApplication, QVBoxLayout) class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout(self) listWidget = QListWidget() listWidget.addItem("sparrow") listWidget.addItem("robin") listWidget.addItem("crow") listWidget.addItem("raven") listWidget.addItem("woodpecker") listWidget.addItem("hummingbird") listWidget.itemDoubleClicked.connect(self.onClicked) vbox.addWidget(listWidget) self.setLayout(vbox) self.setGeometry(400, 300, 350, 250) self.setWindowTitle('QListWidget') self.show() def onClicked(self, item): QMessageBox.information(self, "Info", item.text()) def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) if __name__ == '__main__': main()
我们创建一个 QListWidget
,其项为鸟类的名称。通过双击一个项,当前鸟类的名称会显示在消息框中。
listWidget = QListWidget(self)
创建了一个 QListWidget
。
listWidget.addItem("sparrow") listWidget.addItem("robin") listWidget.addItem("crow") ...
使用 addItem
函数插入新项。
listWidget.itemDoubleClicked.connect(self.onClicked)
我们将 onClicked
函数连接到 itemDoubleClicked
信号。
def onClicked(self, item): QMessageBox.information(self, "Info", item.text())
处理函数接收被双击的项,我们从中用 text
函数获取文本。该文本通过 QMessageBox.information
显示在消息框中。

PyQt QListWidget 清除/计数
clear
函数移除列表中的所有项,count
函数计算所有项的数量。
#!/usr/bin/python import sys from PyQt6.QtWidgets import (QListWidget, QPushButton, QWidget, QHBoxLayout, QMessageBox, QApplication, QVBoxLayout) class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout(self) hbox = QHBoxLayout() self.listWidget = QListWidget(self) self.listWidget.addItems(['sparrow', 'robin', 'crow', 'raven', 'woopecker', 'hummingbird']) clearBtn = QPushButton('Clear', self) clearBtn.clicked.connect(self.onClearClicked) countBtn = QPushButton('Count', self) countBtn.clicked.connect(self.onCountClicked) vbox.addWidget(self.listWidget) hbox.addWidget(clearBtn) hbox.addWidget(countBtn) vbox.addLayout(hbox) self.setLayout(vbox) self.setGeometry(400, 300, 350, 250) self.setWindowTitle('QListWidget') self.show() def onClearClicked(self): self.listWidget.clear() def onCountClicked(self): QMessageBox.information(self, "Info", f'# of birds {self.listWidget.count()}') def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) if __name__ == '__main__': main()
我们有两个按钮。第一个清除所有项,第二个计算所有项的数量并在消息框中显示该数字。
clearBtn = QPushButton('Clear', self) clearBtn.clicked.connect(self.onClearClicked) countBtn = QPushButton('Count', self) countBtn.clicked.connect(self.onCountClicked)
在 QListWidget
下方,我们放置了两个按钮。我们添加了两个点击处理程序。
def onClearClicked(self): self.listWidget.clear()
在 onClearClicked
处理程序中,我们使用 clear
移除所有项。
def onCountClicked(self): QMessageBox.information(self, "Info", f'# of birds {self.listWidget.count()}')
在 onCountClicked
处理程序中,我们使用 count
计算项的数量,并在消息框中显示消息。

QListWidget 对项进行排序
sortItems
函数对 QListWidget
中的项进行排序。
#!/usr/bin/python import sys from PyQt6.QtWidgets import (QCheckBox, QListWidget, QPushButton, QWidget, QHBoxLayout, QApplication, QVBoxLayout) from PyQt6.QtCore import Qt class Example(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): vbox = QVBoxLayout(self) hbox = QHBoxLayout() self.listWidget = QListWidget(self) self.listWidget.addItems(['sparrow', 'robin', 'crow', 'raven', 'woopecker', 'hummingbird']) self.sortOrder = QCheckBox('Ascending', self) sortBtn = QPushButton('Sort', self) sortBtn.clicked.connect(self.onSorted) vbox.addWidget(self.listWidget) hbox.addWidget(self.sortOrder) hbox.addWidget(sortBtn) vbox.addLayout(hbox) self.setLayout(vbox) self.setGeometry(400, 300, 350, 250) self.setWindowTitle('Sorting items') self.show() def onSorted(self): if self.sortOrder.isChecked(): order = Qt.SortOrder.AscendingOrder else: order = Qt.SortOrder.DescendingOrder self.listWidget.sortItems(order) def main(): app = QApplication(sys.argv) ex = Example() sys.exit(app.exec()) if __name__ == '__main__': main()
我们有一个排序按钮。排序顺序通过 QCheckBox
控件选择。
def onSorted(self): if self.sortOrder.isChecked(): order = Qt.SortOrder.AscendingOrder else: order = Qt.SortOrder.DescendingOrder self.listWidget.sortItems(order)
我们使用 isChecked
确定 QCheckBox
的状态,并选择排序顺序;可以是 Qt.SortOrder.AscendingOrder
或 Qt.SortOrder.DescendingOrder
。然后我们将顺序传递给 sortItems
函数。

在本文中,我们介绍了 PyQt 的 QListWidget
。
作者
列出所有 PyQt 教程。