锋哥原创的PyQt6视频教程:
PyQt6提供了两种列表,分别是QListWidget和QListView,其中,QListView是基于模型的,它是QListWidget的父类,使用QListView时,首先需要建立模型,然后再保存数据;而QListWidget是QListView的升级版本,它已经内置了一个数据存储模型QListWidgetItem,我们在使用时,不必自己建立模型,而直接使用addItem()或者addItems()方法即可添加列表项。所以在实际开发时,推荐使用QListWidget控件作为列表。
QListWidget常用方法:
方法 | 说明 |
---|---|
addItem() | 向列表中添加项 |
addItems() | 一次向列表中添加多项 |
insertItem() | 在指定索引处插入项 |
setCurrentItem() | 设置当前选择项 |
item.setToolTip() | 设置提示内容 |
item.isSelected() | 判断项是否选中 |
setSelectionMode() | 设置列表的选择模式,支持以下5种模式。 QAbstractItemView.NoSelection:不能选择; QAbstractItemView.SingleSelection:单选; QAbstractItemView.MultiSelection:多选; QAbstractItemView.ExtendedSelection:正常单选,按Ctrl或者Shift键后,可以多选; QAbstractltemView.ContiguousSelection:与 ExtendedSelection类似 |
setSelectionBehavior() | 设置选择项的方式,支持以下3种方式。 QAbstractItemView.SelectItems:选中当前项; QAbstractltemView.SelectRows:选中整行; OAbstractltemView.SelectColumns:选中整列 |
setWordWrap() | 设置是否自动换行,True表示自动换行,False表示不自动换行 |
setViewMode() | 设置显示模式,有以下两种显示模式。 QListView.ListMode:以列表形式显示; QListView.IconMode:以图表形式显示 |
item.text() | 获取项的文本 |
clear() | 删除所有列表项 |
UI生成参考代码:
from PyQt6 import QtCore, QtGui, QtWidgets
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(642, 475)
self.listWidget = QtWidgets.QListWidget(parent=Form)
self.listWidget.setGeometry(QtCore.QRect(100, 40, 371, 311))
self.listWidget.setSelectionMode(QtWidgets.QAbstractItemView.SelectionMode.MultiSelection)
self.listWidget.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectionBehavior.SelectRows)
self.listWidget.setViewMode(QtWidgets.QListView.ViewMode.IconMode)
self.listWidget.setWordWrap(True)
self.listWidget.setObjectName("listWidget")
self.retranslateUi(Form)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
_translate = QtCore.QCoreApplication.translate
Form.setWindowTitle(_translate("Form", "Form"))
Main参考代码:
"""
python加载ui文件
作者 : 小锋老师
官网 : www.python222.com
"""
import sys
import time
from PyQt6.QtGui import QValidator, QIntValidator, QIcon
from PyQt6.QtWidgets import QApplication, QLabel, QLineEdit, QTextEdit, QComboBox, QFontComboBox, QListWidget, \
QListWidgetItem
from PyQt6 import uic, QtGui
if __name__ == '__main__':
app = QApplication(sys.argv)
ui = uic.loadUi("./QListWidget列表控件.ui")
myListWidget: QListWidget = ui.listWidget
lwItem = QListWidgetItem()
lwItem.setText("进击的巨人 最终季 完结篇 后篇 / Attack on Titan: The Final Season, The Final Chapters - Part 2")
myListWidget.addItem(lwItem)
myListWidget.addItem("杀手")
list = [
"第八个嫌疑人 / 第8个嫌疑人 / Dust To Dust ",
"最后的真相 / 隐秘的真相 / Heart's Motive ",
"坠落的审判 / 坠楼死亡的剖析 / 一场坠楼的剖析",
"猜谜女士 / 常识女王(台)"
]
myListWidget.addItems(list)
myListWidget.insertItem(1, "测试插入")
myListWidget.setCurrentItem(lwItem)
selectedList = myListWidget.selectedItems()
for item in selectedList:
print(item.text())
ui.show()
sys.exit(app.exec())