制作这个播放器的目的是为了将下载下来的mp3文件进行随机或是顺序的播放。选择需要播放的音乐的路径,选择播放方式,经过测试可以完美的播放本地音乐。

【阅读全文】

在开始之前介绍一个免费下载mp3音乐的网站,有需要的可以下载自己喜欢的音乐。当然有各大音乐平台会员的大佬就不需要了。

http://music.y444.cn/#/

缺少音乐素材的可以去免费下载即可,准备好音乐素材后将其放到一个文件夹下面即可。

在应用实现过程中,总共使用了下面这些库,特别需要注意的是这个库playsound使用的版本是1.3.0,听说其他版本在播放音乐时可能存在问题。也可以将播放音乐的部分换成其他的实现方式。

from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sysfrom QCandyUi import CandyWindowimport random, os
from playsound import playsound

最先实现的是播放音乐的业务逻辑,这里是采用pyqt5自带的QThread线程来实现的,目的是将播放音乐的部分作为一个子线程来运行,防止与UI界面的主线程产生阻塞。

实现子线程的部分是一样的范式,一般情况下按照这种范式实现,屡试不爽。在前面的UI桌面应用中几乎都是使用这种方式来实现多线程的。

class PlayThread(QThread):finished = pyqtSignal(bool)def __init__(self, parent=None):super(PlayThread, self).__init__(parent)self.parent = parentself.working = Truedef __del__(self):self.working = Falseself.wait()def run(self):music_files = os.listdir(self.parent.music_file_path.text())print(music_files)for index in range(0, len(music_files) - 1):if self.parent.play_type_selected.currentText() == '随机播放':index = random.randint(0, len(music_files) - 1)print(index)playsound(os.path.join(self.parent.music_file_path.text(), music_files[index]))self.finished.emit(True)

音乐播放的业务逻辑实现完成了,接下来来实现UI界面的部分。应用就是简单的设计了一下不是很复杂。

pyqt5的UI界面的实现方式主要是组件的布局和槽函数的引用,下面是UI界面布局及各个槽函数的初始化及引用。以及如何界面的主线程中调用子线程的使用。

class MusicUI(QWidget):def __init__(self):super(MusicUI, self).__init__()self.init_ui()def init_ui(self):self.setWindowTitle('本地音乐播放器  公众号:[Python 集中营]')self.setWindowIcon(QIcon('音乐.ico'))self.setFixedWidth(500)self.setFixedHeight(100)hbox1 = QHBoxLayout()self.music_file_path = QLineEdit()self.music_file_path.setReadOnly(True)self.music_file_btn = QPushButton()self.music_file_btn.setText('路径')self.music_file_btn.clicked.connect(self.music_file_btn_click)hbox1.addWidget(self.music_file_path)hbox1.addWidget(self.music_file_btn)hbox2 = QHBoxLayout()self.play_type_selected = QComboBox()self.play_type_selected.addItem('随机播放')self.play_type_selected.addItem('顺序播放')self.start_btn = QPushButton()self.start_btn.setText('开始播放')self.start_btn.clicked.connect(self.start_btn_click)hbox2.addWidget(self.play_type_selected)hbox2.addWidget(self.start_btn)vbox = QVBoxLayout()vbox.addLayout(hbox1)vbox.addLayout(hbox2)self.thread_ = PlayThread(self)self.thread_.finished.connect(self.finished)self.setLayout(vbox)def music_file_btn_click(self):dir = QFileDialog.getExistingDirectory(self, "选择文件夹", os.getcwd())self.music_file_path.setText(dir)def start_btn_click(self):self.start_btn.setEnabled(False)self.thread_.start()def finished(self,finished):if finished is True:self.start_btn.setEnabled(True)# 最后,使用mian函数将界面布局的整个过程加入到主体循环中就大功告成了。
if __name__ == '__main__':app = QApplication(sys.argv)w = CandyWindow.createWindow(MusicUI(), theme='blue', title='本地音乐播放器  公众号:[Python 集中营]',ico_path='音乐.ico')w.show()sys.exit(app.exec_())

完整源代码已经保存在百度网盘上面,将上述代码块全部copy到开发中运行即可,或者在公众号内回复'1002'获取下载链接直接下载.py文件到开发工具运行也是可以的。

创作不易,欢迎大家积极提问,有python相关的问题请留言,看到即回复,感谢大家一直的支持!

【往期精彩】

自动化工具:PyAutoGUI的鼠标与键盘控制,解放双手的利器!

来自程序猿的生日蛋糕你见过吗?

懒人python操作,代码中永远只需要导入一个库...

自动化办公:手机号码提取器,使用正则表达式轻松提取文本文件中的手机号码...

刚刚发现的可视化动态图库ipyvizzu,太好看了!

python 本地音乐播放器制作过程相关推荐

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

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

  2. 基于Python实现本地音乐播放器的制作

    制作这个播放器的目的是为了将下载下来的mp3文件进行随机或是顺序的播放.选择需要播放的音乐的路径,选择播放方式,经过测试可以完美的播放本地音乐. 在开始之前介绍一个免费下载mp3音乐的网站,有需要的可 ...

  3. python 播放本地音乐_python播音乐_python放音乐_python本地音乐播放器 - 云+社区 - 腾讯云...

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 转自:http:my.oschina.netlenglingxblog18310 ...

  4. python 播放本地音乐_python本地音乐播放器

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 这两天搜了下tkinter图形界面的帖子,做了个简单的播放器界面,听首<盗 ...

  5. python 播放本地音乐_实战项目—python实现本地音乐播放器

    随着网络的发展,我们已经很少将音乐下载到本地,而是直接在线听歌,方便而又直接.也许你用的音乐播放器是这个 也许是这个 这都不是重点,今天我们要用python自己打造一款音乐播放器. 具体思路 使用py ...

  6. 利用PyQt5制作本地音乐播放器

    介绍 本文是对之前的音乐播放器的一些改进和功能实现.只写了有变化的部分,具体部分请看上一篇博客. [利用PyQt5和QSS制作本地音乐播放器(初稿)](https://blog.csdn.net/we ...

  7. C#制作简单的本地音乐播放器(二)—— 显示歌词

    此篇文章主要补充 C#制作简单的本地音乐播放器(一) 中的"歌词显示"部分的内容. 页面设计部分 相关内容 本程序使用的歌词文件为lrc格式,lrc是英文lyric(歌词)的缩写, ...

  8. Python—实现本地音乐播放器(添加/播放/暂停/下一首/上一首/音量/打开超链接)

    Python-实现本地音乐播放器(添加/播放/暂停/下一首/上一首/音量/打开超链接) 1.样例 2.分析 1.播放器界面 2.功能 2.1播放器界面 button:添加/播放/暂停/下一首/上一首 ...

  9. 利用PyQt5和QSS制作本地音乐播放器(初稿)

    制作缘由 本来我是通过活动白嫖了某云音乐的黑胶VIP的,当时我下了很多VIP才能听整首的歌.但是VIP过期后,这音乐就播放不了了,一方面是它VIP歌曲存储为.ncm文件,另一方面是我将这ncm文件解码 ...

最新文章

  1. qq在线咨询代码,MSN在线代码,贸易通在线留言源代码!
  2. 计算机系统的层次结构是缺一不可的吗,第1章 计算机组成与结构绪论.ppt
  3. ajax发送异步请求四个步骤,深入理解ajax异步请求的五个步骤(详细代码)
  4. Python练习题14
  5. 汇总Eclipse快捷键
  6. 模糊综合评价模型 ——第三部分,一级模糊综合评价模型应用:例题1,对员工进行年终综合评定
  7. 车辆的检测、跟踪和计数
  8. Unity 游戏框架之GameFramework和ET对比
  9. Android KeyStore的使用
  10. 关于微信公众号和小程序开发杂谈~快速认证小程序
  11. STM32学习记录0010——TFTLCD液晶显示屏
  12. 赢在CSDN,我的CSDN成长之路,让子弹飞一会儿
  13. c#语言break语句用法,C# break语句
  14. mysql 启动 pid update_MySql服务器启动错误“服务器退出而不更新PID文件”
  15. maxwell 激励设置报错
  16. linux三剑客试题,Linux三剑客(grep、sed、awk)详解
  17. 揭露液晶电视六大骗术
  18. 日程安排html模板,一款基于日历的日程安排应用模板
  19. 网络系统管理 7、DBMS(MariaDB)
  20. 达菲抗流感原理及作用

热门文章

  1. Math对象属性与方法
  2. 创造与魔法java语言_创造与魔法基础魔法大全 超实用基础魔法推荐
  3. b站如何一次性把up主全部取消关注,让自己去学习
  4. Anddroid IM来电铃声通过耳机播放
  5. 【脚本项目源码】Python制作艺术签名生成器,打造专属你的个人艺术签名
  6. 工作后能捡起英语的三个网站
  7. 用python预测小孩的身高体重标准表格_【儿童的标准身高】儿童身高体重标准表2017 儿童身高体重计算公式...
  8. html中用js格式化JSON输出
  9. air dots 配对_AirDots 使用分享
  10. 【RL系列】Multi-Armed Bandit问题笔记