python3GUI--new音乐播放器!By:PyQt5(附下载地址)

文章目录

  • 一.前言
  • 二.展示
    • 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开发的新音乐播放器,清新的界面你一定会喜欢!欢迎大家下载尝试!
近期应该是不会再开发新的播放器了,项目重心放到别的上面了,有时间会和大家分享的!

在这里插入图片描述

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

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

相关文章

Java集合框架2024最通俗易懂(图片超全)

集合 1.1、定义 集合就是类型统一的数据组合而成的数据结构,该数据结构可以任意的改变长度。 1.3、Set Set数据存储结构,无序,且不可以重复,元素可以为null,但是也只能出现一次,如下图: 1.3.1、HashSe…

[240726] Mistral AI 发布新一代旗舰模型 | Node.js 合并 TypeScript 文件执行提案

目录 Mistral AI 发布新一代旗舰模型:Mistral Large 2Node.js 合并 TypeScript 文件执行提案:--experimental-strip-types Mistral AI 发布新一代旗舰模型:Mistral Large 2 Mistral AI 宣布推出新一代旗舰模型 Mistral Large 2,该…

算法-----递归~~搜索~~回溯(宏观认识)

目录 1.什么是递归 1.1二叉树的遍历 1.2快速排序 1.3归并排序 2.为什么会用到递归 3.如何理解递归 4.如何写好一个递归 5.什么是搜索 5.1深度(dfs)优先遍历&优先搜索 5.2宽度(bfs)优先遍历&优先搜索 6.回溯 1.什…

Temu测评自养号如何做?三分钟带你入门!

环境系统 现在市场上很多的系统都是现成的或软件包,没有解决风控的能力,如果有需要建议大家自己学习一套技术,把技术掌握在自己手里,这样不会有依赖性 手机端环境:越狱后的ios指定版本手机可以一键新机的系统(参数调试)独享的家…

【NLP自然语言处理】为什么说BERT是bidirectional

首先,来看一下Transformer架构图: 我们知道,Bert设计时主要采用的是Transformer编码器部分,要论述Bert为啥是双向的,我想从编码器和解码器的注意力机制来阐述。 在看这篇博客前,需要对Transformer有一定的…

[C++] vector入门迭代器失效问题详解

文章目录 vector介绍**vector iterator 的使用** vector迭代器失效问题由扩容或改变数据引起的迭代器失效reserve的实现(野指针)insert实现(迭代器位置意义改变)insert修改后失效的迭代器 it迭代器失效 erase后的问题总结&#xf…

MyBatis-Plus的基本使用(一)

目录 前言 特性 MyBatis-Plus入门案例 常用注解 小结 前言 这篇文章主要来学习MyBatis-Plus这个非常强大的框架. 在学习MyBatis-Plus之前,需要有MyBatis的学习基础.因为MyBatis -Plus 是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变&#x…

【Java Bean 映射器】通过 MapStruct 和 BeanUtils 拷贝对象的区别

目录 👋前言 👀一、环境准备 🌱二、拷贝工具使用 2.1 BeanUtils 使用 2.2 MapStruct 使用 💞️三、对比 📫四、章末 👋前言 小伙伴们大家好,最近在一些技术文章中看到了开发时经常接触的对…

面向对象·回顾;万类之祖object;抽象类Abstract。

回顾面向对象 类与对象 类--------(instance实例化对象)-------->对象 类图 调出你public方法–接口 访问控制符 常用private,public。 封装 可见性本类包不同包private✓✕✕不写dafalt(默认)✓✓✕protected✓✓继承✓public✓✓✓…

【计算机网络】RIP路由协议实验

一:实验目的 1:掌握在路由器上配置RIPv2。 二:实验仪器设备及软件 硬件:RCMS交换机、网线、内网网卡接口、Windows 2019操作系统的计算机等。具体为:三层交换机1台、路由器2台。 软件:wireshark软件、记…

01-调试开发k8s

使用 Docker 构建 Kubernete 官方 release 是使用 Docker 容器构建的。要使用 Docker 构建 Kubernetes,请遵循以下说明: Requirements docker Key scripts 以下脚本位于 build/ 目录中。请注意,所有脚本都必须从 Kubernetes 根目录运行 build/run.…

【科研绘图】记录一次论文结果复现

复现原论文中的图片是科研的基本功之一,它不仅验证了研究结果的可靠性,确保了科学工作的准确性和可重复性,还深刻地评估了方法的有效性,体现了对原始研究的尊重和对科学过程的严谨态度。这个过程不仅提高了研究的透明度&#xff0…

记忆注意力用于多模态情感计算!

记忆注意力用于多模态情感计算! 目录 情感计算 一、概述 二、研究背景 三、模型结构和代码 六、数据集介绍 七、性能展示 八、复现过程 九、运行过程 模型总结 本文所涉及所有资源均在传知代码平台可获取。 情感计算 近年来,社交媒体的快速扩张推动了用户…

信通院发布!首个大模型混合云标准

近日,中国信通院发布了首个大模型混合云标准,通过定位当前大模型混合云的能力水平,为基于混合云的大模型服务实践提供指引,并明确未来提升方向。同时,中国信通院基于标准展开大模型混合云能力成熟度专项测试&#xff0…

智能家居全在手机端进行控制,未来已来!

未来触手可及:智能家居,手机端的全控时代 艾斯视觉的观点是:在不远的将来,家,这个温馨的港湾,将不再只是我们休憩的场所,而是科技与智慧的结晶。想象一下,只需轻触手机屏幕&#xf…

VMware 上的 Debian Linux 虚拟机无法听到蓝牙耳机的声音解决方案

项目场景: 在Debian上安装QQ音乐,用来摸鱼 问题描述 在安装完QQ音乐后,发现虚拟机无法听到声音,音乐有在正常播放,但是蓝牙耳机没有听到任何声音: 原因分析: 感觉是虚拟机的声卡没有配置&…

WiFi通信——STM32通过ESP8266-01S与阿里云通信

嵌入式设计中常用的无线通信方式主要由蓝牙、WiFi、Zigbee、Lora、NB-IOT等等。这些是最常用的,也是在实际项目开发中根据项目的数据通信特点来选择相应的无线通信方式。本设计主要是讲解WiFi在嵌入式开发中的使用。 1.ESP8266的三种模式 1.1 STA模式(Station) 工…

FPGA开发——独立仿真和联合仿真

一、概述 我们在进行FPGA开发的过程之中,大部分情况下都是在进行仿真,从而验证代码实现结果的正确与否,这里我们引入了独立仿真和联合仿真进行一个简单介绍。 联合仿真:一般我们在进行仿真之前需要在相应的软件中建立相应的工程…

昇思25天学习打卡营第01天|昇思MindSpore大模型基础j介绍

昇思MindSpore和华为昇思MindSpore大模型学习打卡系列文章,本文仅供参考~ 文章目录 前言一、昇思MindSpore是什么?二、执行流程三、设计理念四、层次结构五、Huawei昇腾AI全栈 前言 随着计算机大模型的不断发展,Ai这门技术也越来越重要&#…

【LeetCode 随笔】C++入门级,详细解答加注释,持续更新中。。。

文章目录 58.【简单】最后一个单词的长度🌟 🌈你好呀!我是 山顶风景独好 🎈欢迎踏入我的博客世界,能与您在此邂逅,真是缘分使然!😊 🌸愿您在此停留的每一刻,都…