最近网易云音乐闹出不少事情,甚至被各大应用商店下架。它的某些做法小笨聪也着实不敢苟同,但还是希望它整改后能够发展更好,当然不只是在故事式热评方面,还包括更为重要的版权问题。

由此,小笨聪也萌发了制作一个简易音乐播放器的想法。先看一下效果图:

微信公众号视频演示链接

原理实现主要用到了 PyQt5,熟悉 PyQt5 的伙伴阅读下面的程序应该不难看懂。首先定义布局界面的各个按钮,然后就是功能实现的编写。

一、代码介绍

1.定义界面元素

就是定义一个个界面上用到的按钮元素就好啦。比如播放/暂停、上一首/下一首、循环模式、打开文件夹等等。

 1def __initialize(self):2    self.setWindowTitle('音乐播放器-学编程的金融客(小笨聪)')3    self.setWindowIcon(QIcon('icon.ico'))4    self.songs_list = []5    self.song_formats = ['mp3', 'm4a', 'flac', 'wav', 'ogg']6    self.settingfilename = 'setting.ini'7    self.player = QMediaPlayer()8    self.cur_path = os.path.abspath(os.path.dirname(__file__))9    self.cur_playing_song = ''
10    self.is_switching = False
11    self.is_pause = True
12    # 界面元素
13    # 播放时间
14    self.label1 = QLabel('00:00')
15    self.label1.setStyle(QStyleFactory.create('Fusion'))
16    self.label2 = QLabel('00:00')
17    self.label2.setStyle(QStyleFactory.create('Fusion'))
18    # 滑动条
19    # 播放按钮
20    # 上一首按钮
21    # 下一首按钮
22    # 打开文件夹按钮
23    # 显示音乐列表
24    # 播放模式
25    # 计时器
26    # 界面布局
27    self.grid = QGridLayout()
28    self.setLayout(self.grid)
29    self.grid.addWidget(self.next_button, 1, 11, 1, 2)
30    self.grid.addWidget(self.preview_button, 2, 11, 1, 2)
31    self.grid.addWidget(self.cmb, 3, 11, 1, 2)
32    self.grid.addWidget(self.open_button, 4, 11, 1, 2)

2.选取存放音乐的文件夹

直接调pyqt5相应的函数就行:

 1def openDir(self):2    self.cur_path = QFileDialog.getExistingDirectory(self, "选取文件夹", self.cur_path)3    if self.cur_path:4        self.showMusicList()5        self.cur_playing_song = ''6        self.setCurPlaying()7        self.label1.setText('00:00')8        self.label2.setText('00:00')9        self.slider.setSliderPosition(0)
10        self.is_pause = True
11        self.play_button.setText('播放')

打开文件夹后把所有的音乐文件显示在界面左侧,并保存一些必要的信息:

 1def showMusicList(self):2    self.qlist.clear()3    self.updateSetting()4    for song in os.listdir(self.cur_path):5        if song.split('.')[-1] in self.song_formats:6            self.songs_list.append([song, os.path.join(self.cur_path, song).replace('\\', '/')])7            self.qlist.addItem(song)8    self.qlist.setCurrentRow(0)9    if self.songs_list:
10        self.cur_playing_song = self.songs_list[self.qlist.currentRow()][-1]

3.音乐播放

 1# 设置当前播放的音乐2def setCurPlaying(self):3    self.cur_playing_song = self.songs_list[self.qlist.currentRow()][-1]        self.player.setMedia(QMediaContent(QUrl(self.cur_playing_song)))4# 播放音乐5def playMusic(self):6    if self.qlist.count() == 0:7        self.Tips('当前路径内无可播放的音乐文件')8        return9    if not self.player.isAudioAvailable():
10        self.setCurPlaying()
11    if self.is_pause or self.is_switching:
12        self.player.play()
13        self.is_pause = False
14        self.play_button.setText('暂停')
15    elif (not self.is_pause) and (not self.is_switching):
16        self.player.pause()
17        self.is_pause = True
18        self.play_button.setText('播放')

4.音乐切换

音乐切换有三种方式,即点击上一首/下一首:

 1 # 上一首2 def previewMusic(self):3    self.slider.setValue(0)4    if self.qlist.count() == 0:5        self.Tips('当前路径内无可播放的音乐文件')6        return7    pre_row = self.qlist.currentRow()-1 if self.qlist.currentRow() != 0 else self.qlist.count() - 18    self.qlist.setCurrentRow(pre_row)9    self.is_switching = True
10    self.setCurPlaying()
11    self.playMusic()
12    self.is_switching = False
13 # 下一首
14 def nextMusic(self):
15    self.slider.setValue(0)
16    if self.qlist.count() == 0:
17        self.Tips('当前路径内无可播放的音乐文件')
18        return
19    next_row = self.qlist.currentRow()+1 if self.qlist.currentRow() != self.qlist.count()-1 else 0
20    self.qlist.setCurrentRow(next_row)
21    self.is_switching = True
22    self.setCurPlaying()
23    self.playMusic()
24    self.is_switching = False

双击某首歌曲:

1def doubleClicked(self):
2    self.slider.setValue(0)
3    self.is_switching = True
4    self.setCurPlaying()
5    self.playMusic()
6    self.is_switching = False

设置播放模式。

 1 def playByMode(self):2    if (not self.is_pause) and (not self.is_switching):3        self.slider.setMinimum(0)4        self.slider.setMaximum(self.player.duration())5        self.slider.setValue(self.slider.value() + 1000)6        self.label1.setText(time.strftime('%M:%S', time.localtime(self.player.position()/1000)))7        self.label2.setText(time.strftime('%M:%S', time.localtime(self.player.duration()/1000)))8    # 顺序播放9    if (self.cmb.currentIndex() == 0) and (not self.is_pause) and (not self.is_switching):
10        if self.qlist.count() == 0:
11            return
12        if self.player.position() == self.player.duration():
13            self.nextMusic()
14    # 单曲循环
15    elif (self.cmb.currentIndex() == 1) and (not self.is_pause) and (not self.is_switching):
16        if self.qlist.count() == 0:
17            return
18        if self.player.position() == self.player.duration():
19            self.is_switching = True
20            self.setCurPlaying()
21            self.slider.setValue(0)
22            self.playMusic()
23            self.is_switching = False
24    # 随机播放
25    elif (self.cmb.currentIndex() == 2) and (not self.is_pause) and (not self.is_switching):
26        if self.qlist.count() == 0:
27            return
28        if self.player.position() == self.player.duration():
29            self.is_switching = True
30            self.qlist.setCurrentRow(random.randint(0, self.qlist.count()-1))
31            self.setCurPlaying()
32            self.slider.setValue(0)
33            self.playMusic()
34            self.is_switching = False

为了方便大家直接使用,小笨聪最后利用 Python 的 pyinstaller 包将源码打包成 exe 文件,大家无需任何 Python 编译环境就可以直接在电脑上使用

二、使用演示

微信公众号视频演示链接

以上就是本次音乐播放器制作的过程,微信公众号“学编程的金融客”后台回复“ 音乐播放器”即可获得源码。【完】

往期推荐

1.大学排行榜

2.流浪地球影评

3.北上广深租房图鉴

你的点赞和关注就是对我最大的支持!

保存扫码关注公众号呗

Python制作音乐播放器,帮你随时放飞心情~相关推荐

  1. 用Python制作音乐播放器(下,含完整源代码)

    哈喽,大家不知道是上午好还是中午好还是下午好还是晚上好! 音乐播放器,大家应该不陌生吧!今天我们一起来学习如何用python制作音乐播放器.之所开头有一个"下",是因为我们以前已经 ...

  2. 用Python制作音乐播放器(上)

    用Python制作简单的音乐播放器 哈喽,大家不知道是上午好还是中午好还是下午好还是晚上好! 音乐播放器,大家应该不陌生吧!今天我们一起来学习如何用python制作音乐播放器.之所开头有一个" ...

  3. python制作音乐播放器_python实现音乐播放器 python实现花框音乐盒子

    本文实例为大家分享了python实现音乐播放器的具体代码,供大家参考,具体内容如下 """这是一个用海龟画图模块和pygame的混音模块制作的简易播放器. 作者:李兴球, ...

  4. 小案例:用Python制作音乐播放器

    以下是音乐播放器要实现的功能: 1.可以通过打开存放音频文件夹来添加音频 2.可以播放和暂停音频 3.可以设置播放音量 需要实现音频播放器的模块: 1.pygame的音频播放功能 2.easygui的 ...

  5. 基于python的音频播放器_基于python实现音乐播放器代码实例

    基于python实现音乐播放器代码实例,一首,函数,按钮,布局,音乐 基于python实现音乐播放器代码实例 易采站长站,站长之家为您整理了基于python实现音乐播放器代码实例的相关内容. 核心播放 ...

  6. 树莓派3B qt+mplayer制作音乐播放器(10)

    内容 树莓派3B qt+mplayer制作音乐播放器:播放.暂停.上一曲.下一曲,音量调节. 平台:树莓派+qt+mplayer 1.配置 qt安装见此: https://blog.csdn.net/ ...

  7. winform制作音乐播放器

    winform制作音乐播放器 本文利用C# 调用Windows自带的Windows Media Player 打造一款属于自己的音乐播放器,以供学习分享使用,如有不足之处,还请指正. 概述 Windo ...

  8. python本地音乐播放器+附源文件地址

    python本地音乐播放器 因为现在听歌都要版权,所以我喜欢把音乐下载下来听.但一直没找到喜欢的本地音乐播放器,我也只会一些python皮毛,所以有了自己写一个python本地音乐播放器的想法,经过摸 ...

  9. 用Python制作简易播放器(电子钢琴) mac系统

    用Python制作简易播放器(电子钢琴) 开发环境:Python3.7 Mac OS 思路: 先根据需要设计GUI的样式,并思考需要定义什么功能 把功能写出来 把功能填入GUI之中 用曲子测试完整的程 ...

最新文章

  1. java开发面试复试_java开发实习生面试经历
  2. phpstudy易犯的错误
  3. FFmpeg在Intel GPU上的硬件加速与优化
  4. axure 小程序 lib_详细揭秘微信小程序框架技术——Mpx
  5. Unity MeshBaker 合并网格和材质
  6. php 网站干货,杂谈:优秀的php解密网站和工具网站推荐
  7. 2008最新热门搞笑的50条语录
  8. tomcat最新版本是多少_Tomcat在Windows 10下的安装配置教程
  9. HyperLedger的共识( Consensus)
  10. weblogic 下载文件问题
  11. cocos2dx lua 反编译(20170417增加补充说明)(转)
  12. 台式计算机cpu允许温度,台式机cpu温度多少正常 台式电脑工作时温度范围
  13. 一图读懂IP数据包头结构
  14. GCD中dispatch_barrier的使用方法
  15. idear修改新的git地址
  16. C# 生成图片清晰度问题(转载)
  17. QT qmake makefile minGW
  18. 本地文件包含漏洞详解
  19. MINIS FORUM U820 黑苹果引导OC或CLOVER更新教程
  20. 深度学习和语音系列教程 5-100:求共振峰

热门文章

  1. AHCI协议阅读笔记
  2. 计算机组成原理包健百度云,计算机组成原理包健版的答案解析.doc
  3. 石油专业:一文入门机器学习,以测井岩性分类预测为例
  4. 2021数据科学平台领域最具商业合作价值企业盘点
  5. get、post请求后端接受参数形式
  6. java webservice实例教程
  7. 【领域驱动设计】三分钟搞懂领域驱动设计
  8. 【坑】html5中使用canvas画圆,弧度和角度傻傻分不清楚
  9. 【Android 安装包优化】7z 文件压缩格式 ( 7z 格式简介 | 7z 命令使用说明 )
  10. 2022深圳杯ACD完整论文及详细代码资料