Python编写简单MP3音乐播放器源码

#-- coding: utf-8 --
import os
import tkinter
import tkinter.filedialog
import random
import time
import threading
import pygame

#创建窗口
root = tkinter.Tk()
#这个是窗口的头部标题
root.title(‘音乐播放器v1.0’)
#窗口生成的位置,这里是和屏幕左上角的x,y
root.geometry(‘280x90+400+300’)
#窗口大小不能调整
#root.resizable(False, False)
folder = ‘’

#播放音乐函数
def play():
#folder用来表示存放MP3音乐文件的文件夹
global folder
musics = [folder + ‘\’ + music
for music in os.listdir(folder)
if music.endswith((’.mp3’, ‘.wav’, ‘.ogg’))]
# 初始化混音器设备
pygame.mixer.init()
while playing:
if not pygame.mixer.music.get_busy():
# 随机播放一首歌曲
nextMusic=random.choice(musics)
pygame.mixer.music.load(nextMusic.encode())
# 播放一次
pygame.mixer.music.play(1)
nextMusic = nextMusic.split(’\’)[1:]
musicName.set(‘playing…’ + ‘’.join(nextMusic))
else:
time.sleep(0.1)
#关闭窗口函数
def closeWindow():
# 修改变量,结束线程中的循环
global playing
playing = False
time.sleep(0.3)
try:
# 停止播放,如果已停止,
# 再次停止时会抛出异常,所以放在异常处理结构中
pygame.mixer.music.stop()
pygame.mixer.quit()
except:
pass
root.destroy()
#windows句柄调用关闭窗口函数
root.protocol(‘WM_DELETE_WINDOW’, closeWindow)
pause_resume=tkinter.StringVar(root,value=‘NotSet’)
playing=False

#播放按钮调用播放音乐函数
def buttonPlayClick():
global folder#保持folder是全局变量
if not folder:
folder = tkinter.filedialog.askdirectory()
if not folder:
return
global playing#保持playing是全局变量
playing = True
# 创建一个线程来播放音乐,当前主线程用来接收用户操作
t = threading.Thread(target=play)
t.start()
# 根据情况禁用和启用相应的按钮
buttonPlay[‘state’] = ‘disabled’
buttonStop[‘state’] = ‘normal’
buttonPause[‘state’] = ‘normal’
buttonNext[‘state’] = ‘normal’
voice[‘state’] = ‘normal’
voice.set(0.1)
pause_resume.set(‘Pause’)
buttonPlay = tkinter.Button(root,text=‘Play’,command=buttonPlayClick)
buttonPlay.place(x=20, y=10, width=50, height=20)
buttonPlay[‘state’] = ‘normal’

#暂停与恢复,两个功能公用一个按钮
def buttonPauseClick():
if pause_resume.get()‘Pause’:
pygame.mixer.music.pause()
pause_resume.set(‘Resume’)
elif pause_resume.get()
‘Resume’:
pygame.mixer.music.unpause()
pause_resume.set(‘Pause’)
buttonPause=tkinter.Button(root,textvariable=pause_resume,command=buttonPauseClick)
buttonPause.place(x=140, y=10, width=50, height=20)
buttonPause[‘state’] = ‘disabled’
#停止播放
def buttonStopClick():
global playing
playing = False
pygame.mixer.music.stop()
musicName.set(‘暂时没有播放音乐’)
buttonPlay[‘state’] = ‘normal’
buttonStop[‘state’] = ‘disabled’
buttonPause[‘state’] = ‘normal’
buttonNext[‘state’] = ‘disabled’
voice[‘state’] = ‘disabled’

停止播放按钮

buttonStop = tkinter.Button(root, text=‘Stop’, command=buttonStopClick)
buttonStop.place(x=80, y=10, width=50, height=20)
buttonStop[‘state’] = ‘disabled’
#下一首
def buttonNextClick():
global playing
playing = False
pygame.mixer.music.stop()
pygame.mixer.quit()
buttonPlayClick()

下一首按钮

buttonNext = tkinter.Button(root, text=‘Next’, command=buttonNextClick)
buttonNext.place(x=200, y=10, width=50, height=20)
buttonNext[‘state’] = ‘disabled’
musicName = tkinter.StringVar(root,value=‘暂时没有播放音乐…’)
labelName = tkinter.Label(root,textvariable=musicName)
labelName.place(x=10, y=30, width=260, height=15)

#声音控制
def control_voice(value=0.5):
# 设置背景音乐的音量。取值从0.0到1.0。在新的音乐加载前设置,音乐加载时生效。
#注意; 音乐加载时生效
pygame.mixer.music.set_volume(float(value))

HORIZONTAL表示为水平放置,默认为竖直,竖直为vertical,resolution步长,tickinterval音量两面都显示

voice = tkinter.Scale(root,from_=0, to=1, orient=tkinter.HORIZONTAL,length=240,resolution=0.1, command=control_voice)
voice.place(x=20, y=45 ,width=200)
voice[‘state’] = ‘disabled’

#显示窗口 启动主程序,消息循环
root.mainloop()

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值