Python实现音乐播放器 -----------内附源码

Python做一个简易的音乐播放器
简易音乐播放器

import time
import pygamefile = r'歌曲路径'
pygame.mixer.init()
print('正在播放',file)
track = pygame.mixer.music.load(file)
pygame.mixer.music.play()
time.sleep(130)
pygame.mixer.music.stop()

运行效果:

开始搭建音乐播放器
首先了解项目知识点和所需模块
1.python基础知识
2.requests库
3.time
4.pygame
5.tkinter
6.线程

环境
windows
pycharm 2021.2
python 3.7

先看一下运行效果:

代码讲解:

导入模块

import os
import time
import tkinter
import tkinter.filedialog
import threading
import pygame 

一、界面

root = tkinter.Tk()
root.title('音乐播放器')
root.geometry('460x500+500+100')
root.resizable(False,False) # 不能拉伸# 创建一个 ttk 样式
style = ttk.Style()# 设置框架的背景颜色
# style.configure("TFrame", background="#98F5F9")# 设置前景颜色和边框颜色
style.configure("TFrame", background="#98F5F9", foreground="#000000", bordercolor="#000000")frame = ttk.Frame(root, width=460, height=500)
frame.pack()# 显示
root.mainloop()

按钮


# 添加按钮
buttonChoose = tkinter.Button(root,text='添加',command=buttonChooseClick,fg="#000000",bg="#EFCDF8")
# 布局
buttonChoose.place(x=50,y=10,width=50,height=20)# 播放按钮
pause_resume = tkinter.StringVar(root,value='播放')
buttonPlay = tkinter.Button(root,textvariable=pause_resume,command=buttonPlayClick,fg="#000000",bg="#B2F199")
buttonPlay.place(x=120,y=10,width=50,height=20)
buttonPlay['state'] = 'disabled'# 停止按钮
buttonStop = tkinter.Button(root, text='停止',command=buttonStopClick,fg="#000000",bg="#F8B6B6")
buttonStop.place(x=190, y=10, width=50, height=20)
buttonStop['state'] = 'disabled'# 下一首
buttonNext = tkinter.Button(root, text='下一首',command=buttonNextClick,fg="#000000",bg="#F6E3C4")
buttonNext.place(x=260, y=10, width=50, height=20)
buttonNext['state'] = 'disabled'
# 上一首
buttonPrev = tkinter.Button(root, text='上一首',command=buttonPrevClick,fg="#000000",bg="#F6E3C4")
buttonPrev.place(x=330, y=10, width=50, height=20)
buttonPrev['state'] = 'disabled'# 标签
musicName = tkinter.StringVar(root, value='暂时没有播放音乐...')
labelName = tkinter.Label(root, textvariable=musicName)
labelName.place(x=50, y=30, width=330, height=20)# 音量控制
# HORIZONTAL表示为水平放置,默认为竖直,竖直为vertical
s = tkinter.Scale(root, label='音量', from_=0, to=1, orient=tkinter.HORIZONTAL,length=240, showvalue=0, tickinterval=2, resolution=0.1,command=control_voice)
s.place(x=50, y=50, width=330)

 

二、功能
创建一个文件目录

folder =''
res = []
num = 0
now_music = ''

音乐读取功能

def buttonChooseClick():global folderglobal resif not folder:folder = tkinter.filedialog.askdirectory()musics = [folder + '\\' + musicfor music in os.listdir(folder) \
\if music.endswith(('.mp3','.wav','.ogg'))]ret = []for i in musics:ret.append(i.split('\\')[1:])res.append(i.replace('\\','/'))if not folder:returnglobal playingplaying = True# 根据情况禁用和启用相应的按钮buttonPlay['state'] = 'normal'buttonStop['state'] = 'normal'# buttonPause['state'] = 'normal'pause_resume.set('播放')

显示已加载的音乐

var2 = tkinter.StringVar()
var2.set(ret)
lb = tkinter.Listbox(root,listvariable=var2)
lb.place(x=50,y=100,width=260,height=300)

播放音乐

def play():if len(res):pygame.mixer.init()global numwhile playing:if not pygame.mixer.music.get_busy():netxMusic = res[num]print(netxMusic)print(num)pygame.mixer.music.load(netxMusic.encode())# 播放pygame.mixer.music.play(1)if len(res) -1 == num:num = 0else:num = num + 1netxMusic = netxMusic.split('\\')[1:]musicName.set('playing......' + ''.join(netxMusic))else:time.sleep(0.1)# 点击播放
def buttonPlayClick():buttonNext['state'] = 'normal'buttonPrev['state'] = 'normal'# 选择要播放的音乐文件夹if pause_resume.get() == '播放':pause_resume.set('暂停')global folderif not folder:folder = tkinter.filedialog.askdirectory()if not folder:returnglobal playingplaying = True# 创建一个线程来播放音乐,当前主线程用来接收用户操作t = threading.Thread(target=play)t.start()elif pause_resume.get() == '暂停':# pygame.mixer.init()pygame.mixer.music.pause()pause_resume.set('继续')elif pause_resume.get() == '继续':# pygame.mixer.init()pygame.mixer.music.unpause()pause_resume.set('暂停')

停止播放

def buttonStopClick():global playingplaying = Falsepygame.mixer.music.stop()

下一首

def buttonNextClick():global playingplaying = Falsepygame.mixer.music.stop()global numif len(res) == num:num = 0playing = True# 创建线程播放音乐,主线程用来接收用户操作t = threading.Thread(target=play)t.start()

上一首

def buttonPrevClick():global playingplaying = Falsepygame.mixer.music.stop()## pygame.mixer.quit()global num# num += 1# num -= 1if num == 0:num = len(res) - 2# num -= 1elif num == len(res) - 1:num -= 2else:num -= 2# num -= 1print(num)playing = True# 创建一个线程来播放音乐,当前主线程用来接收用户操作t = threading.Thread(target=play)t.start()

音量控制

def control_voice(value=0.5):pygame.mixer.music.set_volume(float(value))

关闭窗口

def closeWindow():# 修改变量,结束线程中的循环global playingplaying = Falsetime.sleep(0.3)try:# 停止播放,如果已停止,# 再次停止时会抛出异常,所以放在异常处理结构中pygame.mixer.music.stop()pygame.mixer.quit()except:passroot.destroy()

完整代码已经上传到CSDN,0积分下载,有需要的朋友自行下载。

音乐播放器源码

感谢大家的阅读,觉得有所帮助的朋友点点关注点点赞!

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

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

相关文章

EE trade:现货黄金的计量单位及转换

在现货黄金市场中,计量单位的不同会影响投资者对价格的理解和对交易的操作。因此,了解现货黄金的计量单位是每一位投资者的必修课。对于那些刚刚踏入黄金投资的新手们来说,掌握这些知识尤为重要。本文将为您详细介绍现货黄金的主要计量单位及…

绍兴市第七届青少年编程复赛题目(2008)

01&#xff1a;明明的随机数 题目描述 明明想在学校中请一些同学一起做一项问卷调查&#xff0c;为了试验的客观性&#xff0c;他先用计算机生成N个1到1000之间的随机整数&#xff08;N<100&#xff09;,对其中重复的数字&#xff0c;只保留一个&#xff0c;把其余相同的去…

Harbor本地仓库搭建004_Harbor配置管理功能_分布式分发功能_仓库管理_用户管理_垃圾清理_审查服务_项目定额---分布式云原生部署架构搭建00

然后我们再看一下配置管理,这里主要有个认证模式 这里我们是数据库,其实就是我们安装的postgresql 可以看到还有LDAP对吧,这个其实就是自己公司如果有 LDAP服务器,那么可以对接过来,那么,这个时候 再登录harbor的时候,就可以直接使用公司的,LDAP来管理,所有的用户了,其实就是…

AI项目二十三:危险区域识别系统

若该文为原创文章&#xff0c;转载请注明原文出处。 一、介绍 在IPC监控视频中&#xff0c;很多IPC现在支持区域检测&#xff0c;当在区域内检测到有人闯入时&#xff0c;发送报警并联动报警系统&#xff0c;以保障生命和财产安全具有重大意义。它能够在第一时间检测到人员进入…

ipython的使用技巧整理

IPython&#xff08;Interactive Python&#xff09;是一个功能强大的交互式计算环境&#xff0c;广泛用于数据分析、科学计算和编程开发。以下是一些实用的IPython使用技巧&#xff0c;帮助你更高效地使用这个工具。 ### 1. 基本操作 - **启动IPython**: 在终端输入 ipython …

Python酷库之旅-比翼双飞情侣库(16)

目录 一、xlwt库的由来 1、背景和需求 2、项目启动 3、功能特点 4、版本兼容性 5、与其他库的关系 6、示例和应用 7、发展历史 二、xlwt库优缺点 1、优点 1-1、简单易用 1-2、功能丰富 1-3、兼容旧版Excel 1-4、社区支持 1-5、稳定性 2、缺点 2-1、不支持.xls…

[创业之路-116] :制造业企业的必备管理神器-ERP-为什么?传统制造业的转型-数字化、智能化下的需求,ERP是管理面和资金面的数字化、智能化的需要

目录 一、时代背景&#xff1a;制造业企业与智能制造 1.1 传统的制造业 1、概念 2、特点 3、面临的挑战&#xff1a;内卷严重 4、发展趋势 1.2 制造业的转型&#xff1a;数字化 1.3 制造业的转型&#xff1a;智能化 1.4 制造业的转型&#xff1a;无人工厂 1、智能化 …

每日一题——8行Python代码实现PAT乙级1029 旧键盘(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 ​编辑我的写法 代码分析 时间复杂度分析 空间复杂度分析 改进建议 方法 1&#…

leetcode33:搜索旋转数组

题目链接&#xff1a;33. 搜索旋转排序数组 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int search(vector<int>& nums, int target) {int n (int)nums.size();if(!n){return -1;}if(n 1){return nums[0] target ? 0 : -1;}int left 0, …

pytest+parametrize+yaml实例

# 一、yaml格式 # # yaml是一种数据类型&#xff0c;可以和json之间灵活的切换&#xff0c;支持注释、换行、字符串等。可以用于配置文件或编写测试用例。 # # 数据结构&#xff1a;一般是键值对的方式出现。注意编写时值前面必须有空格&#xff0c;键&#xff1a;&#xff08;…

python flask 前奏

如下场景的code&#xff0c; 代码见gitee地址 &#xff1a;pythonflask: pythonflask #1.使用类传参 & 使用字典传参 #2.带参数的url #3.参数带类型的 #4.获取第二页数据 /book/list?page2 #5.if&for 控制及循环 #6.过滤器 #7.自定义过滤器&#xff0c;过滤器命…

Java开发笔记Ⅲ (一些零碎记录)

一些报错处理 找不到注入的对象 可以在 dao 层 的接口上添加 Repository 注解 common 模块报错 Unable to find main class 由于common中只有一些常量与工具类&#xff0c;不需要主类&#xff0c;故出现该错误时只需删除pom文件中的build标签即可解决 网关模块报错 Failed…

如何自定义ArrayList:深入理解Java ArrayList的底层原理

ArrayList是Java集合框架中的一个重要类&#xff0c;它实现了一个可变大小的数组。尽管ArrayList的使用非常简单&#xff0c;但理解其底层实现对优化和调试代码有着重要意义。本文将通过编写一个自定义的ArrayList&#xff0c;帮助你深入理解ArrayList的底层原理。 什么是Arra…

正则表达式常用表示

视频教程&#xff1a;10分钟快速掌握正则表达式 正则表达式在线测试工具&#xff08;亲测好用&#xff09;&#xff1a;测试工具 正则表达式常用表示 限定符 a*&#xff1a;a出现0次或多次a&#xff1a;a出现1次或多次a?&#xff1a;a出现0次或1次a{6}&#xff1a;a出现6次a…

网络安全:探索云安全的最佳实践

文章目录 网络安全&#xff1a;探索云安全的最佳实践引言云安全简介云安全面临的挑战云安全的最佳实践数据加密身份和访问管理定期安全审计 结语 网络安全&#xff1a;探索云安全的最佳实践 引言 在我们之前的文章中&#xff0c;我们讨论了网络安全的多个方面&#xff0c;包括…

2021数学建模A题目–“FAST”主动反射面的形状调节

A 题——“FAST”主动反射面的形状调节 思路&#xff1a;该题主要是通过利用伸缩杆调整FAST反射面&#xff0c;给出合适的调整方案 程序获取 第一题问题思路与结果&#xff1a; 当待观测天体S位于基准球面正上方&#xff0c;结合考虑反射面板调节因素&#xff0c;确定理想抛物…

颜色分类 - LeetCode 热题 98

大家好&#xff01;我是曾续缘&#x1f498; 今天是《LeetCode 热题 100》系列 发车第 98 天 技巧第 3 题 ❤️点赞 &#x1f44d; 收藏 ⭐再看&#xff0c;养成习惯 颜色分类 给定一个包含红色、白色和蓝色、共 n 个元素的数组 nums &#xff0c;原地对它们进行排序&#xff0…

等保2.0中,如何理解和实施安全管理中心的支持作用?

等保2.0&#xff0c;即《信息安全技术 网络安全等级保护基本要求》的第二版&#xff0c;是中国关于网络安全保护的一项重要标准。它强调了一个中心和三重防护的概念&#xff0c;其中的“一个中心”指的就是安全管理中心&#xff08;Security Management Center,简称SMC&#xf…

标题:高考后的抉择:专业优先还是学校优先?

标题&#xff1a;高考后的抉择&#xff1a;专业优先还是学校优先&#xff1f; 随着2024年高考的落幕&#xff0c;考生们面临着一个重要的抉择&#xff1a;在分数限制的条件下&#xff0c;是选择一个心仪的专业&#xff0c;还是选择一个知名度更高的学校&#xff1f;这个问题没…

代理四川公司疑难商标办理商标异议复审办理

申请商标注册或者办理其他商标事宜&#xff0c;可以自行办理&#xff0c;也可以委托依法设立的商标代理机构办理。外国人或者外国企业在中国申请商标注册和办理其他商标事宜的&#xff0c;应当委托依法设立的商标代理机构办理&#xff0c;按照被代理人的委托办理商标注册申请或…