基于python实现音乐播放器代码实例
核心播放模块(pygame内核)
import time import pygameimport easygui as gui file = r’D:CloudMusicG.E.M.邓紫棋,艾热 - 光年之外 (热爱版).mp3’ #这里为音乐文件路径pygame.mixer.init()gui.msgbox('正在播放'+file)track = pygame.mixer.music.load(file)pygame.mixer.music.play()time.sleep(240)pygame.mixer.music.stop()
完整版源代码:
import osimport tkinterimport tkinter.filedialogimport timeimport threadingimport pygame #实现音频播放 #第一步:搭建界面 root = tkinter.Tk()root.title(’封亚飞的音乐播放器v1.0’)#设置窗口大小和屏幕绝对位置root.geometry(’460x600+500+100’)#固定窗口大小,设置窗口不可拉伸root.resizable(False,False) folder = ’’# 接收文件路径 默认为空res=[]# num=0now_music = ’’ #第二步:实现功能 def buttonChooseClick():#添加文件函数 global folderglobal res#如果folder不为空,则····if not folder:folder = tkinter.filedialog.askdirectory() #选择目录,返回目录名musics = [folder + ’’ + musicfor music in os.listdir(folder)if music.endswith((’.mp3’,’.m4a’,’.wav’,’.ogg’))] ret = []for i in musics:ret.append(i.split(’’)[1:])res.append(i.replace('',’/’)) var2 = tkinter.StringVar()var2.set(ret)lb = tkinter.Listbox(root,listvariable=var2)lb.place(x=50,y=220,width=260,height=300) if not folder:returnglobal playingplaying = True #根据情况禁用或启用相应按钮 bottonPlay[’state’] = ’normal’bottonStop[’state’] = ’normal’ #buttonPause[’state’] = ’normal’ pause_resume.set(’播放’) #播放音乐函数def play():#初始化混响设备 if len(res):pygame.mixer.init()global numwhile playing:if not pygame.mixer.music.get_busy():#随机播放nextMusci = res[num]print(nextMusci)print(num)pygame.mixer.music.load(nextMusci.encode())#播放一次pygame.mixer.music.play(1)#print(len(res)-1)if len(res) - 1 ==num:num=0else:num +=1nextMusci = nextMusci.split('')[1:]musicName.set(’playing....’+’’.join(nextMusci))else:time.sleep(0.1) #点击播放函数def bottonPlayClik():bottonNext[’state’]=’normal’bottonPrev[’state’]=’normal’ #选择要播放的音乐文件夹if pause_resume.get() == ’播放’:pause_resume.set(’暂停’)global folder if not folder:#选择目录,返回目录名folder = tkinter.filedialog.askdirectory() if not folder:return global playing playing = True #创建一个进程来播放音乐,当前主进程用来接收用户操作 t = threading.Thread(target=play) t.start() elif pause_resume.get() == ’暂停’: pygame.mixer.music.pause()pause_resume.set(’继续’) elif pause_resume.get()==’继续’:pygame.mixer.music.unpause() pause_resume.set(’暂停’) #停止播放函数def bottonStopClik():global playing playing = False pygame.mixer.music.stop() #下一首函数def bottonNextClik():global playing playing = False pygame.mixer.music.stop() global num if len(res) == num:num=0playing = Trueglobal tt = threading.Thread(target=play) t.start() #上一首函数def bottonPrevClik():global playing playing=False pygame.mixer.music.stop() global num if num==0:num=len(res)-2 elif num ==len(res)-1:num-=2else:num-=2print(num) playing = Trueglobal tt.threading.Thread(target=play) t.start()#关闭窗口函数def closeWindows():global playingplaying=Falsetime.sleep(0.3) try:pygame.mixer.music.stop()pygame.mixer.quit() except:passroot.destroy() #声音控制函数def control_voice(value=0.5):pygame.mixer.music.set_volume(float(value)) #添加按钮bottonChoose=tkinter.Button(root,text=’添加’,command=buttonChooseClick)#按钮布局bottonChoose.place(x=50,y=50,width=50,height=20) #播放按钮跟踪变量值的变化pause_resume=tkinter.StringVar(root,value=’播放’)bottonPlay=tkinter.Button(root,textvariable=pause_resume,command=bottonPlayClik)#按钮布局bottonPlay.place(x=120,y=50,width=50,height=20)bottonPlay[’state’] = ’disabled’#未添加文件(刚启动)时禁用 #停止播放bottonStop = tkinter.Button(root,text=’停止’)#按钮布局bottonStop.place(x=50,y=130,width=50,height=20) #下一首bottonNext = tkinter.Button(root,text=’下一首’,command=bottonNextClik)#按钮布局bottonNext.place(x=50,y=100,width=50,height=20)bottonNext[’state’]=’disabled’ #上一首bottonPrev = tkinter.Button(root,text=’上一首’,command=bottonPrevClik)#按钮布局bottonPrev.place(x=120,y=100,width=50,height=20)bottonPrev[’state’]=’disabled’ #显示内容--播放状态musicName = tkinter.StringVar(root,value=’暂时没有播放音乐...’)labelName = tkinter.Label(root,textvariable=musicName)labelName.place(x=10,y=20,width=260,height=20) #显示内容--音量调节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=150,width=200) #关闭窗口root.protocol('WM_DELETE_WINDOW',closeWindows) #启用消息循环:显示出上一步创建的画板对象root.mainloop()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持好吧啦网。
相关文章:
1. 在Asp.net core项目中使用WebSocket2. ASP.NET MVC使用异步Action的方法3. 浅谈springboot一个service内组件的加载顺序4. Python制作一个随机抽奖小工具的实现5. 使用vue-cli创建项目并webpack打包的操作方法6. matplotlib如何设置坐标轴刻度的个数及标签的方法总结7. 利用FastReport传递图片参数在报表上展示签名信息的实现方法8. python3.8.1+selenium实现登录滑块验证功能9. SpringMVC+Jquery实现Ajax功能10. 使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例