大蟒蛇python教程共享基于Python实现音乐播放器的实现示例代码

一、环境设置

第一步引入必须的各类包

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

特别是pygame需要手动安装

pip install pygame

二、播放功能

首先选择音乐目录,然后创建播放现成,播放音乐。

# 播放按钮  def buttonplayclick():      # 选择要播放的音乐文件夹      global folder      if not folder:          folder = tkinter.filedialog.askdirectory()      if not folder:          return        global playing      playing = 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)

三、停止功能

很直接,直接停止播放,当然更改按钮状态也属常规操作。

def buttonstopclick():      global playing      playing = false        pygame.mixer.music.stop()      musicname.set('暂时没有播放音乐')        buttonplay['state'] = 'normal'      buttonstop['state'] = 'disabled'      buttonpause['state'] = 'disabled'      buttonnext['state'] = 'disabled'      global folder      folder = ''      buttonstop = tkinter.button(root,                              text='stop',                              command=buttonstopclick)  buttonstop.place(x=80, y=10, width=50, height=20)  buttonstop['state'] = 'disabled'  

四、暂停与恢复

这个好理解,也是直接现成操作,加个判断,状态更改。

# 暂停与恢复,两个功能共用一个按钮  def buttonpauseclick():      # global playing      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')

五、关闭

先结束现成,然后关闭窗体。

# 关闭程序时执行的代码  def closewindow():      # 修改变量,结束线程中的循环      global playing      playing = false      time.sleep(0.3)        try:          # 停止播放,如果已停止,          # 再次停止时会抛出异常,所以放在异常处理结构中          pygame.mixer.music.stop()          pygame.mixer.quit()      except:          pass      root.destroy()

六、完整代码

#!/usr/bin/python  # -*- coding: utf-8 -*-  """  @author:livingbody  @file:music_play.py  @time:2022/04/19  """    import os  import tkinter  import tkinter.filedialog  import random  import time  import threading  import pygame    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)              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)      # 关闭程序时执行的代码  def closewindow():      # 修改变量,结束线程中的循环      global playing      playing = false      time.sleep(0.3)        try:          # 停止播放,如果已停止,          # 再次停止时会抛出异常,所以放在异常处理结构中          pygame.mixer.music.stop()          pygame.mixer.quit()      except:          pass      root.destroy()      root.protocol('wm_delete_window', closewindow)    pause_resume = tkinter.stringvar(root, value='notset')  playing = false      # 播放按钮  def buttonplayclick():      # 选择要播放的音乐文件夹      global folder      if not folder:          folder = tkinter.filedialog.askdirectory()      if not folder:          return        global playing      playing = 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)      # 停止按钮  def buttonstopclick():      global playing      playing = false        pygame.mixer.music.stop()      musicname.set('暂时没有播放音乐')        buttonplay['state'] = 'normal'      buttonstop['state'] = 'disabled'      buttonpause['state'] = 'disabled'      buttonnext['state'] = 'disabled'      global folder      folder = ''      buttonstop = tkinter.button(root,                              text='stop',                              command=buttonstopclick)  buttonstop.place(x=80, y=10, width=50, height=20)  buttonstop['state'] = 'disabled'      # 暂停与恢复,两个功能共用一个按钮  def buttonpauseclick():      # global playing      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 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=0, y=40, width=270, height=20)        if __name__ == '__main__':      # 启动消息循环      root.mainloop()

七、改进

下一步,可加入播放列表,点选播放音乐,也可以拖动进度播放。

以上就是基于python实现音乐播放器的实现示例代码的详细内容,更多关于python音乐播放器的资料请关注<计算机技术网(www.ctvol.com)!!>其它相关文章!

需要了解更多python教程分享基于Python实现音乐播放器的实现示例代码,都可以关注python教程分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/pythontutorial/1086105.html

(0)
上一篇 2022年4月29日
下一篇 2022年4月29日

精彩推荐