在当今数字化时代,音乐已成为我们生活中不可或缺的一部分,无论是在工作、学习还是休闲时刻,音乐总能带给我们无尽的享受与灵感。而随着编程技术的不断发展,利用编程语言实现一个个性化的音乐播放器成为了许多技术爱好者的追求。本文将向大家介绍一个使用Python实现的简易音乐播放器示例代码,通过结合tkinter图形用户界面库与pygame音乐处理库,我们将亲手打造一个功能完备、操作简便的音乐播放工具。无论你是Python初学者,还是对音乐播放技术感兴趣的开发者,本文都将为你提供一个全面而实用的学习参考。
一、环境设置
第一步引入必须的各类包
importosimporttkinterimporttkinter.filedialogimportrandomimporttimeimportthreadingimportpygame
特别是pygame需要手动安装
pipinstallpygame
二、播放功能
首先选择音乐目录,然后创建播放现成,播放音乐。
#播放按钮defbuttonPlayClick():#选择要播放的音乐文件夹globalfolderifnotfolder:folder=tkinter.filedialog.askdirectory()ifnotfolder:returnglobalplayingplaying=True#创建一个线程来播放音乐,当前主线程用来接收用户操作t=threading.Thread(target=play)t.start()#根据情况禁用和启用相应的按钮buttonPlay[\'state\']=\'disabled\'buttonStop[\'state\']=\'normal\'buttonPause[\'state\']=\'normal\'buttonNext[\'state\']=\'normal\'pause_resume.set(\'Pause\')buttonPlay=tkinter.Button(root,text=\'Play\',command=buttonPlayClick)buttonPlay.place(x=20,y=10,width=50,height=20)
三、停止功能
很直接,直接停止播放,当然更改按钮状态也属常规操作。
defbuttonStopClick():globalplayingplaying=Falsepygame.mixer.music.stop()musicName.set(\'暂时没有播放音乐\')buttonPlay[\'state\']=\'normal\'buttonStop[\'state\']=\'disabled\'buttonPause[\'state\']=\'disabled\'buttonNext[\'state\']=\'disabled\'globalfolderfolder=\'\'buttonStop=tkinter.Button(root,text=\'Stop\',command=buttonStopClick)buttonStop.place(x=80,y=10,width=50,height=20)buttonStop[\'state\']=\'disabled\'
四、暂停与恢复
这个好理解,也是直接现成操作,加个判断,状态更改。
#暂停与恢复,两个功能共用一个按钮defbuttonPauseClick():#globalplayingifpause_resume.get()==\'Pause\':pygame.mixer.music.pause()pause_resume.set(\'Resume\')elifpause_resume.get()==\'Resume\':pygame.mixer.music.unpause()pause_resume.set(\'Pause\')
五、关闭
先结束现成,然后关闭窗体。
#关闭程序时执行的代码defcloseWindow():#修改变量,结束线程中的循环globalplayingplaying=Falsetime.sleep(0.3)try:#停止播放,如果已停止,#再次停止时会抛出异常,所以放在异常处理结构中pygame.mixer.music.stop()pygame.mixer.quit()except:passroot.destroy()
六、完整代码
#!/usr/bin/python#-*-coding:UTF-8-*-\"\"\"@author:livingbody@file:music_play.py@time:2022/04/19\"\"\"importosimporttkinterimporttkinter.filedialogimportrandomimporttimeimportthreadingimportpygamefolder=\'\'defplay():#folder用来表示存放MP3音乐文件的文件夹globalfoldermusics=[folder+\'\\\'+musicformusicinos.listdir(folder)\\ifmusic.endswith((\'.mp3\',\'.wav\',\'.ogg\'))]#初始化混音器设备pygame.mixer.init()whileplaying:ifnotpygame.mixer.music.get_busy():#随机播放一首歌曲nextMusic=random.choice(musics)musicName.set(\'playing....\'+nextMusic)pygame.mixer.music.load(nextMusic.encode())#播放一次pygame.mixer.music.play(1)else:time.sleep(0.3)root=tkinter.Tk()root.title(\'音乐播放器v1.0\')root.geometry(\'280x70+400+300\')root.resizable(False,False)#关闭程序时执行的代码defcloseWindow():#修改变量,结束线程中的循环globalplayingplaying=Falsetime.sleep(0.3)try:#停止播放,如果已停止,#再次停止时会抛出异常,所以放在异常处理结构中pygame.mixer.music.stop()pygame.mixer.quit()except:passroot.destroy()root.protocol(\'WM_DELETE_WINDOW\',closeWindow)pause_resume=tkinter.StringVar(root,value=\'NotSet\')playing=False#播放按钮defbuttonPlayClick():#选择要播放的音乐文件夹globalfolderifnotfolder:folder=tkinter.filedialog.askdirectory()ifnotfolder:returnglobalplayingplaying=True#创建一个线程来播放音乐,当前主线程用来接收用户操作t=threading.Thread(target=play)t.start()#根据情况禁用和启用相应的按钮buttonPlay[\'state\']=\'disabled\'buttonStop[\'state\']=\'normal\'buttonPause[\'state\']=\'normal\'buttonNext[\'state\']=\'normal\'pause_resume.set(\'Pause\')buttonPlay=tkinter.Button(root,text=\'Play\',command=buttonPlayClick)buttonPlay.place(x=20,y=10,width=50,height=20)#停止按钮defbuttonStopClick():globalplayingplaying=Falsepygame.mixer.music.stop()musicName.set(\'暂时没有播放音乐\')buttonPlay[\'state\']=\'normal\'buttonStop[\'state\']=\'disabled\'buttonPause[\'state\']=\'disabled\'buttonNext[\'state\']=\'disabled\'globalfolderfolder=\'\'buttonStop=tkinter.Button(root,text=\'Stop\',command=buttonStopClick)buttonStop.place(x=80,y=10,width=50,height=20)buttonStop[\'state\']=\'disabled\'#暂停与恢复,两个功能共用一个按钮defbuttonPauseClick():#globalplayingifpause_resume.get()==\'Pause\':pygame.mixer.music.pause()pause_resume.set(\'Resume\')elifpause_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\'#下一首音乐defbuttonNextClick():globalplayingplaying=Falsepygame.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=0,y=40,width=270,height=20)if__name__==\'__main__\':#启动消息循环root.mainloop()
七、改进
下一步,可加入播放列表,点选播放音乐,也可以拖动进度播放。
总结
通过本次Python音乐播放器的实现过程,我们不仅掌握了tkinter库在图形用户界面设计中的应用,还深入了解了pygame库在音乐播放控制方面的强大功能。从界面布局到音乐播放,再到多线程处理与资源优化,我们一步步构建了一个既美观又实用的音乐播放工具。这个过程不仅锻炼了我们的编程能力,还让我们更加深刻地体会到了技术带来的乐趣与成就感。希望这个示例代码能够激发你对Python编程和音乐播放技术的进一步探索,让你在技术的道路上不断前行,创造出更多有趣且实用的作品。
© 版权声明
本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!
THE END