pyqt 文件浏览列表视图和图标视图

pyqt 文件浏览列表视图和图标视图

  • 目的
  • 效果
  • 代码

目的

使用pyqt实现文件浏览列表视图和图标视图,像电脑文件浏览一样。如下图所示。
在这里插入图片描述
在这里插入图片描述

效果

在这里插入图片描述

在这里插入图片描述

代码

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QToolBar, QAction, QFileSystemModel, QTreeView, QListView, QSplitter
from PyQt5.QtCore import Qt, QSize, QDirclass FileBrowser(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle('File Browser')self.setGeometry(100, 100, 800, 600)self.model = QFileSystemModel()self.model.setRootPath(QDir.rootPath())self.tree = QTreeView()self.tree.setModel(self.model)self.tree.setRootIndex(self.model.index(QDir.rootPath()))self.tree.setColumnWidth(0, 250)self.list_view = QListView()self.list_view.setModel(self.model)self.list_view.setRootIndex(self.model.index(QDir.rootPath()))self.list_view.setViewMode(QListView.IconMode)self.list_view.setIconSize(QSize(64, 64))self.splitter = QSplitter(Qt.Horizontal)self.splitter.addWidget(self.tree)self.splitter.addWidget(self.list_view)self.container = QWidget()self.layout = QVBoxLayout()self.layout.addWidget(self.splitter)self.container.setLayout(self.layout)self.setCentralWidget(self.container)self.create_toolbar()def create_toolbar(self):toolbar = QToolBar("视图选择")self.addToolBar(toolbar)list_view_action = QAction("列表视图", self)list_view_action.triggered.connect(self.set_list_view)toolbar.addAction(list_view_action)icon_view_action = QAction("图标视图", self)icon_view_action.triggered.connect(self.set_icon_view)toolbar.addAction(icon_view_action)def set_list_view(self):self.list_view.setViewMode(QListView.ListMode)self.list_view.setIconSize(QSize(32, 32))def set_icon_view(self):self.list_view.setViewMode(QListView.IconMode)self.list_view.setIconSize(QSize(64, 64))if __name__ == "__main__":app = QApplication(sys.argv)window = FileBrowser()window.show()sys.exit(app.exec_())

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/863892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据领域的常用开发语言详解

大数据开发语言主要包括以下几个,以下是它们在大数据开发领域的优缺点和应用场景的详细说明: 1. Java 优点: 跨平台性:Java的“一次编写,到处运行”的特性使得其可以轻松地运行在多个操作系统上。面向对象&#xff…

OpenCV学习之cv2.subtract函数

OpenCV学习之cv2.subtract函数 一、简介 cv2.subtract 是 OpenCV 库中的一个基本函数,用于对两幅图像进行逐像素的减法操作。 二、基本语法 cv2.subtract(src1, src2, dstNone, maskNone, dtypeNone)三、参数说明 src1 (numpy.ndarray): 第一幅输入图像或数组。 …

上海市计算机学会竞赛平台2023年6月月赛丙组差分求和

题目描述 给定一个整数序列,对其中任意两个数,计算后项减前项的差,输出这些差的差。 例如对于 𝑎1,𝑎2,𝑎3,𝑎4a1​,a2​,a3​,a4​ 来说,输出 (𝑎2−𝑎1)…

html2pdf.js生成PDF空白页面问题解决办法

现象 1、Scale参数1.8时,安卓手机在20页以上可能爆掉生成空白页 2、Scale参数1.8时,苹果手机在5页以上可能爆掉生成空白页 原因是浏览器支持画布的尺寸大小限制 解决办法 分页生成,一个元素一页这样不可能超过限制尺寸。 查到解决代码&a…

代码随想录算法训练营第四十五天|198.打家劫舍 213.打家劫舍II 337.打家劫舍III

LeetCode 198.打家劫舍 题目链接:198.打家劫舍 踩坑:很多坑,自动把它当作背包问题了,但其实这就是一个普通的动态规划题目,背包问题本质上是一个二维问题,只是可以简化成一维,想要抽象为背包问…

探索Scala的类型奥秘:协变与逆变全解析

🔄 探索Scala的类型奥秘:协变与逆变全解析 在Scala的强类型系统中,协变(covariance)和逆变(contravariance)是两个核心概念,它们允许我们在泛型编程中更灵活地使用类型。本文将深入…

03-权限绕过漏洞

一、基础知识 水平越权 水平越权是指用户在系统中拥有超出其权限范围的访问权限。这可能导致安全漏洞和潜在的风险,因为用户可以访问他们不应该有权访问的敏感信息或执行他们不应该执行的操作。 垂直越权 垂直越权是指用户或攻击者利用系统中的漏洞或错误配置&a…

【横穿自动驾驶】读书笔记

我自己,有时候还是有些眼高手低的,但是技术领域多读书大概是没错的。 最近想读完下面这两本书: Feedback control of dynamic systemAlgorithms for Optimization 第二本不用多说,就是求解优化问题的方法综述。横穿自动驾驶系列…

webform 连接连接数据的操作

web-form 查询数据库 ,从配置文件中读取字符信息 查询 // 从配置文件中读取数据 string sqlstr // 获取数据库连接字符串ConfigurationManager.ConnectionStrings["staffConnectionString2"].ConnectionString;DataTable dt new DataTable(); // 存储…

《零信任时代的网络安全:2024年的新挑战与机遇》

《零信任时代的网络安全:2024年的新挑战与机遇》 引言 随着数字化转型的深入,网络安全的重要性日益凸显。零信任模型作为新一代网络安全架构,其核心理念是“永不信任,始终验证”。2024年,零信任模型已经成为企业网络…

Build Redundancy at Every Tier(在每一层构建冗余)

Build Redundancy at Every Tier(在每一层构建冗余) 什么是冗余? 冗余指的是在系统的不同层次(或组件)中添加备用资源或备份,以确保在部分组件发生故障时,系统仍然能够正常运行。 为什么大型…

Orangepi Zero2使用外设驱动库wiringOP配合定时器驱动SG90舵机

目录 一、舵机的基本认知和硬件接线 1.1 舵机的基本认知: 1.2 硬件接线: 1.3 怎么控制舵机旋转不同的角度: 二、Linux定时器 2.1 定时器setitimer()函数原型和头文件: 2.2 信号处理函数signal()原型和头文件: 2…

<电力行业> - 《第10课:变电》

1 变电 变电环节,顾名思义就是改变电压的环节,主要是在变电站和变电所完成的。变电站和变电所主要区别在于:变电站比变电所更大。 发电厂的变压器和配电变压器也属于“变电”,但我们在说电网环节时,变电特指电网公司…

嵌入式软件常用测试工具

嵌入式软件常用的测试工具和方法可以总结如下: 测试工具 GDB: 描述:GDB是一个开源的调试工具,常用于GNU编译器集合中,支持多种编程语言,如C、C、Java等。功能:通过命令行与目标应用程序进行交…

【STM32嵌入式系统设计与开发---传感器拓展】——1_4_标准库FreeRTOS移植实验

目录 雅俗理解源码下载链接知识拓展步骤1:stm32f103vet6移植freeRTOS步骤:(1)准备开发环境(2)添加FreeRTOS移植 致谢 雅俗理解 雅:FreeRTOS是一个开源的实时操作系统(RTOS)&#xf…

支持向量机(SVM)在机器学习中的简单示例

目录 工作原理 核函数 SVM用于分类 结果分析 结论 ❤❤❤动动发财的小手点点赞点点关注哦~~~❤❤❤ 支持向量机是一种强大的监督学习模型,用于分类和回归任务。它通过找到数据点之间的最优边界来区分不同的类别。SVM特别适用于那些具有清晰边界但线性不可分的…

Codeforces Beta Round 7 C. Line 题解 数论 扩展欧几里得

Line 题目描述 A line on the plane is described by an equation A x B y C 0 AxByC0 AxByC0 . You are to find any point on this line, whose coordinates are integer numbers from − 5 ⋅ 1 0 18 -510^{18} −5⋅1018 to 5 ⋅ 1 0 18 510^{18} 5⋅1018 inclusiv…

RabbitMQ-交换机的类型以及流程图练习-01

自己的飞书文档:‌‍‬‍‬‍​‍‬​⁠‍​​​‌⁠​​‬‍​​​‬‬‌​‌‌​​​​​​‍​‍​‌⁠‬​RabbitMQ的流程图和作业 - 飞书云文档 (feishu.cn) 作业 图片一张 画rabbit-mq 消息发…

测试开发工程师需要掌握什么技能?

测试开发工程师是软件开发中至关重要的角色之一。他们负责编写、维护和执行自动化测试脚本、开发测试工具和框架,以确保软件的质量和稳定性。为了成为一名优秀的测试开发工程师,你需要掌握以下技能: 1. 编程技能: 作为测试开发工…

LabVIEW程序员应该怎么提高自己的工作能力?

作为一名LabVIEW程序员,提升工作能力可以从以下几个方面入手: 1. 深入理解LabVIEW基础 掌握LabVIEW编程语言:熟悉LabVIEW的图形化编程方式,理解其数据流编程模型。熟悉常用的VI(虚拟仪器)和函数&#xff1…