文章目录
- 一.前言
- 二.展示
- 1.启动
- 2.MV推荐
- 3.专辑详情页
- 4.歌手详情页
- 5.搜索结果页
- 6.歌曲播放页
- 7.我喜欢歌曲页
- 8.我喜欢专辑页
- 三.思路&启发
- 1.布局
- 2.细节
- 3.组件复用
- 4.项目结构
- 5.优化速度
- 1.Nuitka
- 1.显著提高性能:
- 2.减小程序体积:
- 3.增强安全性:
- 2.采用缓存机制
- 3.页面索引记录
- 四.食用方法
- 五.总结
欢迎下载体验!
文件大小:72.03M
下载地址:https://wwt.lanzoul.com/iTWDU25p2oih
一.前言
大家好呀,之前预告过了,近期要发一款新的音乐播放器,保证亮眼!本次使用PyQt5开发一款主打听欧美风歌曲的音乐播放器,软件包含多个页面,支持歌词描边、帅气的播放页,让我们拭目以待!对了,有的读者说我的博客图太多了,最好是能多写一些开发思路,本篇全是干货,请大家放心阅读。
二.展示
1.启动
本次的音乐播放器主打简约风。经过一个splash之后进入我们的软件主页,首页包含多个模块,分别是专辑推荐、单曲推荐、MV推荐、歌手排行。
首页下方是歌手排行模块
2.MV推荐
MV推荐页面随机推荐MV内容,每个内容都是可以点击播放的~
3.专辑详情页
专辑详情页和歌手详情页头部背景均采用封面模糊化处理
4.歌手详情页
歌手详情页内部包含多个tab,均可点击,在此不再赘述。
5.搜索结果页
搜索结果页包含多个类别
6.歌曲播放页
本次的歌曲播放页经过精心设计,包括明暗两种配色。
7.我喜欢歌曲页
8.我喜欢专辑页
三.思路&启发
1.布局
本次开发仍然脱离了QT设计师,所有ui内容都是手搓出来的,拿主界面举个例子,我们把主界面分成多个区域:整体在一个widget上,然后防止堆叠组件,使用不同的“页”控制内容的展示,整体是垂直布局,上方为水平布局,内部为垂直布局,将我们的界面拆成不同的区域(类),方便管理与测试,最后把每个部分拼接起来,实现各自的功能,构成我们软件的主体。
老是有朋友问,左侧导航栏控制右侧展示不同内容的需求如何实现,在此介绍一下我的思路把:用按钮+堆栈布局(组件)即可,使用按钮控制堆栈组件(布局)的索引,展示不同的内容。
同理,播放页亦是如此。
2.细节
本次增加了许多细节,我来列举一下吧:
1.页面切换效果使用动画
2.无边框+阴影+可调整大小窗口
3.窗口全屏\恢复切换动画
4.歌名(歌手名)滚动效果
5.专辑(歌手详情)背景模糊效果
6.播放页歌词滚动效果
7.特色桌面歌词
8.特色对话框
3.组件复用
为了我们的软件整体风格统一,我这边定义了多个按钮类和标签类,它们具有相同的属性,将配置写入单独的配置文件里,统一管理图标与颜色及样式。
4.项目结构
PyQt5项目并没有一个规范的项目同一结构,下图是我们项目的项目结构 run.pyw是我们软件的入口,其他目录见名知意。
5.优化速度
本次从代码层面对软件的启动速度、响应速度进行优化:具体来说是:
1.Nuitka
Nuitka优点大致如下:
1.显著提高性能:
Nuitka 通过将 Python 代码编译成二进制格式,可以显著提高程序的执行速度。由于 C++ 代码的执行效率通常高于 Python 解释器,因此编译后的程序在执行时会更加快速,能够更有效地利用系统资源。
2.减小程序体积:
相比其他打包工具,Nuitka 生成的执行文件通常体积更小。这是因为 Nuitka 在编译过程中会优化代码,去除不必要的部分,并将多个模块合并成一个紧凑的可执行文件。
3.增强安全性:
将 Python 代码编译成二进制格式还可以增强程序的安全性。由于攻击者难以直接查看或修改编译后的代码,因此逆向工程或篡改程序的难度大大增加。
2.采用缓存机制
在软件根目录/data/cache/cover下缓存着界面加载的封面数据,因为我们耗时操作大多是由访问接口以及加载封面造成的,访问接口采用线程的方式,在子线程里进行耗时操作,加载图片时,先检测本地是否存在图片,有的话直接从本地读取,否则加载网路图片展示到界面上,之后把图片混存到本地,所以我们软件根目录是越来越大的,用户可以定期清理缓存数据优化存储空间。
3.页面索引记录
我们的主界面以及子界面是用堆栈组件构成的,比如我们首次点击排行榜页面,需要加载每个排行榜的数据,当我们在此切换到这个页面时,由于已经加载过了,就不会再产生网络请求重复加载了,同理:搜索结果页、歌手详情页…都用了这个思想。
四.食用方法
安装时,请避免中文、带空格的目录!
本次开发软件依赖外部接口,具体来说是依赖node.js提供的接口服务,不过无需担心,笔者已经打包好了。
windows用户首先双击运行kill&start.bat,待黑框显示本地服务地址(一般是http://localhost:3000)
然后双击exe启动软件即可。
五.总结
本次和大家分享了我使用PyQt5开发的新音乐播放器,清新的界面你一定会喜欢!欢迎大家下载尝试!
近期应该是不会再开发新的播放器了,项目重心放到别的上面了,有时间会和大家分享的!