第26天 | 28天学会PyQt5,高级控件之QListView

列表组件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数据分析》国庆期间发布

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值