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 教程。