列表组件QListView是从QAbstractItemView 派生的类,实现了QAbstractItemView类定义的接口,是Model/View架构中的视图类之一,是模型/视图框架的一部分,提供基于模型的的列表模式或图标模式视图。它将存储在模型中的项显示为简单的没有父子层次的列表或图标集合,视图不显示水平或垂直标题,常用的方法如下表所示:
方法 | 描述 |
setModel() | 用来设置View所关联的Model,可以使用Python原生的list作为数据源Model; |
selectedItem() | 选中Model的条目; |
isSelected() | 判断Model中的某条目是否被选中; |
setViewMode() | 设置视图模式。ListMode:条目从上到下布局,小尺寸显示,IconMode:条目从左到右布局,大尺寸显示; |
常用的事件类型如下表所示:
事件类型 | 描述 |
clicked | 单击某项时,触发此事件; |
doubleClicked | 双击击某项时,触发此事件; |
activated | 激活index指定的项目时,触发此事件; |
entered | 鼠标光标进入index指定的项目时,触发此事件; |
iconSizeChanged | 在视图可见时设置此图标大小时,触发此事件; |
indexesMoved | 在视图中移动索引时,触发此事件; |
pressed | 按下鼠标按钮时,触发此事件; |
viewportEntered | 鼠标光标进入视图时,触发此事件。 |
程序清单:listview.py
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget,
QHBoxLayout, QListView
from PyQt5.QtGui import QIcon, QStandardItem, QStandardItemModel
# 继承QWidget
class ListView(QWidget):
sports = [{'img': "football.png", "title": "足球"},
{"img": "basketball.png", "title": "篮球"},
{"img": "valleyball.png", "title": "排球"}]
list_view = None
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
# 设置布局
layout = QHBoxLayout()
# 数据层次结构,10行5列
self.list_view = QListView()
model = QStandardItemModel()
# 输入内容
for sport in self.sports:
item = QStandardItem(QIcon(sport["img"]), sport["title"])
model.appendRow(item)
self.list_view.setModel(model)
layout.addWidget(self.list_view)
# 单击事件
self.list_view.clicked.connect(self.list_click)
self.setLayout(layout)
# 调整窗口大小
self.resize(900, 500)
# 窗口居中
self.center()
# 窗口标题
self.setWindowTitle("QListView应用")
# 显示窗口
self.show()
# 获取文件夹路径
def list_click(self, index):
# 获取选中文本所在的列
item = self.sports[index.row()]["title"]
print(item)
# 实现居中
def center(self):
f = self.frameGeometry()
c = QDesktopWidget().availableGeometry().center()
f.moveCenter(c)
self.move(f.topLeft())
if __name__ == "__main__":
app = QApplication(sys.argv)
w = ListView()
sys.exit(app.exec_())
运行程序之后,弹出的窗口如下:
好了,QListView的内容就说到这了,关注我,下一节更精彩。
今日头条:老陈说编程,到2021年国庆节,Python就全部分享完了,完整的课程有:
1.《12天搞定Python》
2.《16天搞定Python数据分析》
3.《10天搞定Python网络爬虫》
4. 《Django3.0项目实战》
5. 《25天学会Wxpython》
6. 《28天学会PyQt5》发布中
7. 《25天学会Seaborn数据分析》在csdn发布完了
8. 《3天搞定Pyecharts数据分析》国庆期间发布