python3GUI--音乐播放器(精简版)By:PyQt5(附下载地址)


一.前言

传送门:
1.python3GUI–打造一款音乐播放器By:PyQt5(附下载地址)

2.python3GUI–音乐播放器第二弹By:PyQt5(附下载地址)

3.python3GUI–音乐播放器第三弹By:PyQt5(附下载地址)

本次在前面三个版本上进行代码删减,去掉冗余功能,注重提升用户体验,更换API,提高播放成功率。

二.预览

1.主界面

请添加图片描述
主界面延续之前的风格,对部分内容进行删减。
请添加图片描述

增加了歌单推荐,每张歌单都有30首歌曲
请添加图片描述
模仿web版x易云的banner,点击banner后,就会对banner推荐内容进行搜索

2.歌单页

请添加图片描述
上图为本地(下载)歌单
请添加图片描述
上图为在线歌单 or 搜索结果页

3.歌词页

请添加图片描述
本次优化了歌词页的歌词逻辑,增加了交互动画
请添加图片描述
增加了歌词页切换动画

4.播放列表

播放列表风格不变
请添加图片描述

5.mini

在这里插入图片描述
mini仿照x易云的mini窗口,做了相关交互动画
请添加图片描述

6.设置

本次重新绘制了设置窗口,设置窗口分为基本设置、搜索下载设置、高级设置。请添加图片描述

请添加图片描述
请添加图片描述

三.心得

1.解耦

解耦思路不仅仅应用在逻辑代码设计过程中,应该用在软件开发的各个环节当中,举个例子:通过设置多个QTableWidget将同类的不同数据区别展示,通过设置QStackedWidget的索引,展示相应的table,能够有效地在UI代码上解耦。

2.体验优化

如果您下载了本次我打包好的exe文件,就能够明显体验到,本次的软件启动、响应有了明显的提升,本次在UI设计上使用了缓存思路,把可能重复使用的资源文件(如:banner、歌手图片)缓存到本地,以提升整个UI响应速度,通过QThread配合信号和槽机制,让耗时的操作在子线程中进行,避免阻塞UI主线程,其中,在线音乐的源、歌词、歌图、歌手图、搜索结果、歌单图等数据都是在子线程中进行的。

3.歌词显示

记得前面笔者单独说了下歌词的显示机制,虽然简单实现了歌词的显示,并且能够和当前播放歌词匹配,但是仔细的话能够发现还是存在bug,比如歌词进度对不上、最后一局歌词无法渲染。本次重新调整了歌词显示逻辑,仍然使用正则切割出指定格式的歌词item,但是歌词的改变是通过QTimer实现的,并不是和player绑定,这样做提高了歌词的同步性、能够显示所有歌词。

四.总结

本次对音乐播放器进行了精简代码,约用了5500行代码,其中七分之三为UI代码,七分之三为逻辑代码,七分之一为引擎代码。本次提升了软件的稳定性、流畅性,打包好放在了这里,大家自取。

猜你喜欢

转载自blog.csdn.net/a1397852386/article/details/128430962