传送门:
python3GUI–仿做一个网易云音乐By:PyQt5(附下载地址)
python3GUI–仿做一个网易云音乐(第二弹v1.5)By:PyQt5(附下载地址)
本篇为模仿网易云音乐2.0篇,是本系列最后一篇,本篇继续在v1.5基础上进行改进,尽最大努力模仿网易云音乐播放器UI,本篇将全方面介绍咱们的“网易云音乐”









































在此用一个思维导图展示本软件实现的所有UI

这里拿两个页面作为示例展示


整个UI设计方面要有一个全局观,从整体去看局部,首先先看整个页面布局大致是什么布局,然后再看每个布局中需要什么组件,让我们的仿品不止“长得像”,也要“用得像”。
在UI设计中,我很少直接将数据展示到U中,一般就是构思好布局后,在组件中放入Layout,最后在页面需要的时机,将数据填充到Layout中,这样做可以让我们的界面更加灵活,使逻辑与UI分离开来,通过单一的脚本即可完成UI中数据的操作,降低了UI与逻辑的耦合性,即使出了问题,我们也能很快地定位到问题所在。
Designer可以帮我们绘制绝大部分的UI,但是无法满足我们的自定义需求,这里需要我们自己定义一个或多个组件基类,运用面向对象的思想封装、继承这个基类,这样,当我们在用的时候,直接new出这个对象,填入对应的数据,很方便地能够完成组件的创建,也能够大大减少我们的代码量与维护成本。
信号与槽机制是Qt的灵魂,它能够把一些事件或者自定义信号与我们的槽函数关联起来,一定要充分理解这个机制。举个例子:本次把歌单信息与歌单详情页关联起来,即用户点击了歌单,就会跳转到歌单详情页,而详情页的信息是歌单传过来的,,我们的界面有许多歌单,不能每一个歌单都写一个详情页吧?所以在歌单组件中加入自定义的信号,每当歌单组件被点击后,发射歌单名称,封面…等数据到歌单详情页,详情页把这些信息分开展示。(当然,如果接入了线上数据,大概率是发射一个歌单ID,然后通过接口拿到此ID的相关信息,展示到详情页。)
在本次迭代过程中,学习到了一些新的Qt5库,在此分享给大家。
构建任务栏按钮,详情可参考
用于听歌识曲-加载动画
在界面构建好后,可能需要动态调整指定布局中的组件。
在本次撰写播客-左上角推荐组件的时候,重写了一个QWidget,实现了鼠标滚轮滚动切换显示类别、类别内容,参考了一篇C++文章
本次仍然对我们的云音乐播放器进行改进,在撰写UI过程中遇到了一些困难,参考了许多相关C++资料,因为是用碎片时间写的,前前后后加起来也花了一些时间,创作实属不易,能点个赞吗?。软件打包好,放在蓝奏云(解压后大小:49.2MB),大家可以自行下载体验。
