python3GUI--模仿百度网盘的本地文件管理器 By:PyQt5(详细分享)

文章目录



本软件是一个本地文件管理器,包含多个功能强大的子组件,非常适合学习PyQt!

详细功能演示视频

一.前言

哈喽大家好呀,今天继续给大家带来我使用PyQt5开发的软件,本次给大家打来的是一款仿百度网盘的本地文件管理器,这款软件UI样式模仿了百度网盘的样式,包含多功能文件管理界面、登录注册界面、锁定界面、自定义的音视频播放组件、图片查看组件、文本编辑组件、mini桌面贴合组件、托盘组件...更多惊喜等你发现!

二.项目简介

这里我们使用一张思维导图尽可能展示本软件系统的所有功能

软件包括多个模块和组件,下面我会进行详细介绍~

三.详细模块介绍

1.登录注册

一款成型的软件系统是不能缺少登录注册的,本软件系统也是支持登录注册,并且实现了记住密码和自动登录功能,左侧二维码好奇的朋友可以去扫描,扫描之后跳转到博主的CSDN主页,我们设置了贴心的提示标签,对用户当前输入的内容进行校验,通过与数据库数据进行比对来进行登录的验证,我们使用了sqlite3数据库加密存储了用户的密码数据,只有用户自己知道自己的密码,用户登录成功后会更新lastlogin的数据,用户数据表建表语句如下:

bash 复制代码
CREATE TABLE IF NOT EXISTS users (
    id INTEGER PRIMARY KEY AUTOINCREMENT,  -- 内部唯一主键
    username TEXT NOT NULL UNIQUE,
    password TEXT NOT NULL,
    lastlogin INTEGER
)

2.主界面

用户登录成功后进入到软件主界面,主界面样式大家都很熟悉,主界面由顶部标题tab栏、左侧导航栏、右侧内容区构成。

在顶部区域展示了当前软件的图标和名字点击logo跳转到博主博客主页、核心tab页面切换按钮、右侧用户信息以及窗口控制区域。

左侧tab栏展示了常用的一切导航按钮,用户可以快速地切换到本机对应的目录查看文件夹内容,下面的二维码展示了作者的博客主页二维码,算得上是作者的一个AD吧,最底部是当前机器的磁盘使用/总磁盘容量显示。

右侧内容区域是我们核心操作区域,这个区域支持两种视图分别是:列表视图和网格(缩略图)视图通过右上角按钮切换,在本区域可以对文件或文件夹进行操作,用户可以在每个item上右击,执行对应的功能。

下面使用动图来展示

3.桌面mini组件

这个小组件会在用户成功登录诸侯贴合在桌面右上角,用户可以自行拖动此组件到任意位置,在这个组件上右击能够看到所有的右击快捷操作菜单,菜单中可以进行和托盘一样的操作:打开主界面、锁定、关于、退出。

用户可以拖动单个或多个文件到此组件,组件获取到文件后会自动将文件移动到用户的个人文件夹中,此功能为一个便捷操作。

4.锁定界面

这是博主的一个巧思,界面也是借鉴了百度网盘的UI界面,通过在此界面的输入框中输入用户密码解除锁定,回到主界面。

5.其他核心界面

这里我们内置了三类文件打开的解决方案,主要是针对音视频、图片、文本文件。

下面是我们支持打开的文件数据类型

bash 复制代码
# 图片文件扩展名
image_extensions = {
    ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".tiff", ".webp", ".svg", ".ico", ".heic", ".jp2"
}
# 音乐文件扩展名
audio_extensions = {
    ".mp3", ".wav", ".flac", ".aac", ".ogg", ".wma", ".m4a", ".alac", ".aiff", ".pcm"
}
# 视频文件扩展名
video_extensions = {
    ".mp4", ".avi", ".mkv", ".mov", ".flv", ".wmv", ".webm", ".mpeg", ".mpg", ".m4v", ".3gp", ".ts"
}

# 文本文件扩展名
text_extensions = {
    # 常见文本文档
    '.txt', '.log', '.md', '.csv', '.json', '.xml', '.yaml', '.yml', '.ini', '.cfg', '.conf', '.tex',

    # 网页文件
    '.html', '.htm', '.css', '.js', '.php', '.asp', '.aspx', '.jsp',

    # 脚本文件
    '.py', '.sh', '.bat', '.ps1', '.rb', '.pl', '.lua', '.r',

    # 数据文件
    '.tsv', '.jsonl', '.sql', '.db', '.sqlite', '.toml',

    # 标记语言/文档
    '.mdx', '.rst', '.adoc', '.org',

    # 日志/配置扩展
    '.log', '.cfg', '.conf', '.ini'
}

1.音视频播放器

当用户打开音频(或视频)文件时,默认使用本系统自带的音视频播放器进行播放,播放器支持播放进度、模式、文件切换与调整、支持静音还原、播放暂停,值得一提的是我们为音频播放设置可可视化动感的播放效果,欢迎大家体验!

2.图片查看器

熟悉我的朋友对这个组件肯定是熟悉,没错,我们借鉴了前面图片查看器,但是稍作了调整,为左右切换按钮加入了黑色遮罩背景,这样我们在查看白色背景图片时,仍然能够看清这两个按钮,顶部放置了快捷操作按钮,用户可以自由缩放、处理当前文件,图片查看器支持鼠标滚轮缩放调整图片,更多细节期待你来发现!

3.文本编辑器

这是博主仿照文本编辑器进行的开发,支持基本文本操作,支持展示行号,大家能够在这个组件中完成基本的文本编辑需求,我们贴心设计了多种功能入口:顶部菜单区域、顶部中间工具按钮、全中文右击菜单。

四.心得体会

1.界面设计

自从开始使用webengine+内嵌html代码 的模式,博主就开始一发不可收了,因为确实很好用,这不是一种专用的设计思路,而是一种通用的界面设计思路,有时候不得不承认PyQt的组件定制化的局限性,要不就是去绘制、要不就是去继承重写,我们使用web的方式解决了这个痛点,通过自由的css样式设计自己想实现的复杂界面,就拿主界面来说,我们分成了三个区域,您能看出有哪些位置使用了web来实现的么?博主使用一张图来揭晓谜底!

图中三个位置都是使用了web来开发设计出来的,灵活的tab搭配上可以关闭的广告以及强大的右侧文件管理&视图切换,让我们尽可能敏捷地还原目标软件的样式!

2.博主对qt设计师设计软件的看法

这里谈谈我对 Qt Designer 这款设计软件的看法。

我认为 Qt Designer 是一款非常优秀的工具。相信许多同学在初学时,都是从它入门的。它极大地降低了学习门槛,让我们能够通过可视化的方式绘制界面,更直观地理解各类组件与布局的共性和特性。

不过,我想强调的是:Qt Designer 虽然功能强大、组件丰富,但毕竟还是有限的。Qt 本身拥有上千个类,不可能全部集成在设计器中。因此,当遇到一些特殊需求时,单靠设计器往往难以实现。此外,在实际项目中常会出现重复模块的情况,如果每次都依赖设计器从头设计一遍,显然不够高效。

随着对 PyQt 理解的深入,你会逐渐发现这种"依赖设计器"的感觉会改变。虽然在初期我们可以暂时使用 .ui 文件(基于 XML),但最终想要实现灵活、可扩展的功能,仍然需要回归到 Python 代码本身。

3.以后还会开发哪些软件

这个说不好,真的我这个人其实三分热度,但是决定要做的就一定做好甚至是完美,喜欢的东西愿意花时间去研究,也喜欢接受一定范围内的新鲜事物。

本身接触PyQt是因为它能帮助设计漂亮并且功能强大的界面,了解博主的朋友可能知道我开发音乐播放器都有5~6款了,刚开始开发音乐播放器就想把所有功能都加到里面,到后来越做越臃肿,慢慢地随着我做项目的增多,开始模块化设计界面和功能,复杂界面也能设计,但是大道至简,把用户常用的功能设计出来即可,就拿音乐播放器举例子:基础的列表展示、歌单功能、搜索、播放器相关功能做出来其实就比较不错了,因为大多数人用的大多数功能也就这些,至于听歌识曲、电台...没有必要的。

今年开发了几款联动YOLO的软件系统,我个人是比较喜欢的,在此按照博主喜欢程度给大家推荐一下:

1、python3GUI--基于PyQt5+DeepSort+YOLOv8智能人员入侵检测系统(详细图文介绍)

2、python3GUI--智慧交通分析平台:By:PyQt5+YOLOv8(详细介绍)

3、python3GUI--视频监控管理平台 By:PyQt5(详细讲解)

4、python3GUI--车牌、车牌颜色识别可视化系统 By:PyQt5(详细介绍)

5、python3GUI--Joy音乐播放器 在线播放器 播放器 By:PyQt5(附下载地址)

这些都是我今年非常不错PyQt5开发的软件!

五.总结

本次和大家详细分享了我使用PyQt5开发的模仿百度网盘的本地文件管理器,详细展示了每个页面、组件的具体功能,最后和大家分享了我对UI设计的一些看法与心得体会,最后推荐了一些本人2025年开发的项目,最后希望大家天天开心,学业进步!

相关推荐
Q_Q5110082853 小时前
python基于web的汽车班车车票管理系统/火车票预订系统/高铁预定系统 可在线选座
spring boot·python·django·flask·node.js·汽车·php
新子y3 小时前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python
囚生CY3 小时前
【速写】优化的深度与广度(Adam & Moun)
人工智能·python·算法
重整旗鼓~3 小时前
28.redisson源码分析分布式锁
java·开发语言
Query*3 小时前
Java 设计模式——工厂模式:从原理到实战的系统指南
java·python·设计模式
爱学习的uu3 小时前
CURSOR最新使用指南及使用思路
人工智能·笔记·python·软件工程
哼?~3 小时前
C++11标准 上 (万字解析)
开发语言·c++
VB.Net3 小时前
C#循序渐进
开发语言·c#
叶凡要飞3 小时前
RTX5060Ti安装双系统ubuntu22.04各种踩坑点(黑屏,引导区修复、装驱动、server版本安装)
人工智能·python·yolo·ubuntu·机器学习·操作系统