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

server/2024/9/24 8:06:55/

文章目录

  • 二.展示
    • 1.启动
    • 2.添加音乐&播放
    • 3.软件风格
  • 三.软件整体功能-览
  • 四.实现原理
    • 1.界面设计
    • 2.音频播放
    • 3.打包
  • 五.总结


博客二连发,继续为大家带来我使用PyQt5开发的软件,本次为大家分享我写的一款本地音乐播放器,支持多种音乐格式包括不限于mp3、flac、aac,本篇尽量比较详细介绍每一部分开发思路,开始~

二.展示

1.启动

我们的音乐播放器只有一个页面,所有操作都是在这一个页面进行的,所以界面很简单
在这里插入图片描述

2.添加音乐&播放

本次是一款本地音乐播放器,支持播放的也都是本地文件,我们点击添加按钮添加本地音乐文件到播放列表中。
在这里插入图片描述

3.软件风格

本次使用QT内置的方法,内置了三种风格样式,下面仅演示一下Fusion样式
在这里插入图片描述

三.软件整体功能-览

在这里插入图片描述

四.实现原理

1.界面设计

为了开发效率,本次使用QtDesigner设计页面,使用pyuic将设计好的.ui文件转为.py文件,通过使用多继承的方式调用生成好的界面ui文件,这样保证了开发效率也进行了解耦,详细设计见下图

整体是一个垂直布局,上面是一个QListWidget,中间使用水平布局与弹簧设置QLabel居中用于显示当前状态,使用两个QLabel显示当前播放进度,中间使用QSlider给予用户一个调节播放进度的接口组件,最下方一排是QPushButton与QComboBox内部水平布局。
在这里插入图片描述

2.音频播放

下面介绍一下本软件实现音频播放的原理:
使用QMediaPlayer配合本机解码器对音频进行解析播放,使用
QMediaPlaylist用作播放列表,存储播放列表中的本地音频文件,调用其中的方法设置播放模式,上一曲与下一曲的实现也是通过调用QMediaPlaylist相关方法实现的。QMediaPlayer给我们提供了相当丰富的信号,我们可以连接到自己的槽函数来操作播放器,比如连接positionChanged信号,我们可以获取播放器的最新播放位置,将其格式化后展示到界面上,就能知道当前的播放进度,连接mediaStatusChanged信号,我们能获取到最新的播放列表索引继而更新界面上展示的文件信息。

3.打包

本次仍然使用Nuitka进行打包,使用NIS Edit制作成安装包,安装包大小为27.3M,大家可以自行下载体验一下,启动速度还是很快的。
下载地址:

https://wwt.lanzoul.com/i2VAu1wppx9g

五.总结

本次使用PyQt5制作了一款本地简易音乐播放器
在这里插入图片描述


http://www.ppmy.cn/server/20371.html

相关文章

【公务员专场】选调、省考和国考

公务员目录 一、考公概述1、选调2、省考3、国考 二、为何考公1、考试正规2、待遇提高3、福利待遇4、管理规范5、传统思维 三、考试公告1、选调2、省考3、国考 一、考公概述 1、选调 选调是指地方政府或相关部门针对特定岗位进行的选拔活动,通常是为了选拔优秀的应…

uniapp 开发H5中适配底部安全区域不生效的解决方法

在适配底部安全区域时我们通常会使用如下方法 box-sizing: content-box; padding-bottom: 0 !important; padding-bottom: constant(safe-area-inset-bottom) !important; padding-bottom: env(safe-area-inset-bottom) !important; 但是只是加上面的样式会发现并不起作用&…

如何部署 wfs 分布式服务

说明: wfs是海量小文件存储系统。wfs1.x不直接支持分布式存储,但为了应对大规模部署和高可用需求,推荐采用如Nginx这样的负载均衡服务,通过合理的资源配置和定位策略,可以在逻辑上模拟出类似分布式的效果。也就是说&am…

Pytorch分布式train——pytorch.distributed.launch V.S. torchrun

1. 较早的pytorch.distributed.launch python -m torch.distributed.launch --nproc_per_node4 --nnodes1 --node_rank0 train.py --args XXX 参数解析: nnodes:节点(主机)的数量,通常一个节点对应一个主机 node_rank…

锂电池SOH预测 | 基于CNN-GRU的锂电池SOH预测(matlab)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…

Vue2与Vue3:深度剖析核心差异与升级亮点

核心差异与升级亮点 随着Vue.js框架的不断演进,Vue2与Vue3作为两个重要版本,各自承载了特定时期的前端开发理念和技术实践。本文将全面探讨Vue2与Vue3之间的核心区别,旨在帮助开发者理解两者在设计思路、性能优化、API结构、生命周期管理等方…

Java基础_集合类_List

List Collection、List接口1、继承结构2、方法 Collection实现类1、继承结构2、相关类(1)AbstractCollection(2)AbstractListAbstractSequentialList(子类) 其它接口RandomAccess【java.util】Cloneable【j…

hive创建hbase外部关联表实例

在cdh6.3.2已经做好hbase和hive相关配置,这里不阐述。 要创建上述的表结构,你需要先在HBase中创建相应的表,然后在Hive中创建一个EXTERNAL TABLE来映射到这个HBase表。以下是详细的步骤: 步骤1:在HBase中创建表 确定…