当前位置:   article > 正文

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

python音乐播放器

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

  1. import time
  2. import pygame
  3. file = r'歌曲路径'
  4. pygame.mixer.init()
  5. print('正在播放',file)
  6. track = pygame.mixer.music.load(file)
  7. pygame.mixer.music.play()
  8. time.sleep(130)
  9. pygame.mixer.music.stop()

运行效果:

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

环境
windows
pycharm 2021.2
python 3.7

先看一下运行效果:

代码讲解:

导入模块

  1. import os
  2. import time
  3. import tkinter
  4. import tkinter.filedialog
  5. import threading
  6. import pygame 

一、界面

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

按钮

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

 

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

  1. folder =''
  2. res = []
  3. num = 0
  4. now_music = ''

音乐读取功能

  1. def buttonChooseClick():
  2.     global folder
  3.     global res
  4.     if not folder:
  5.         folder = tkinter.filedialog.askdirectory()
  6.         musics = [folder + '\\' + music
  7.                   for music in os.listdir(folder) \
  8. \
  9.                   if music.endswith(('.mp3','.wav','.ogg'))]
  10.         ret = []
  11.         for i in musics:
  12.             ret.append(i.split('\\')[1:])
  13.             res.append(i.replace('\\','/'))
  14.     if not folder:
  15.         return
  16.     global playing
  17.     playing = True
  18.     # 根据情况禁用和启用相应的按钮
  19.     buttonPlay['state'] = 'normal'
  20.     buttonStop['state'] = 'normal'
  21.     # buttonPause['state'] = 'normal'
  22.     pause_resume.set('播放')

显示已加载的音乐

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

播放音乐

  1. def play():
  2.     if len(res):
  3.         pygame.mixer.init()
  4.         global num
  5.         while playing:
  6.             if not pygame.mixer.music.get_busy():
  7.                 netxMusic = res[num]
  8.                 print(netxMusic)
  9.                 print(num)
  10.                 pygame.mixer.music.load(netxMusic.encode())
  11.                 # 播放
  12.                 pygame.mixer.music.play(1)
  13.                 if len(res) -1 == num:
  14.                     num = 0
  15.                 else:
  16.                     num = num + 1
  17.                 netxMusic = netxMusic.split('\\')[1:]
  18.                 musicName.set('playing......' + ''.join(netxMusic))
  19.             else:
  20.                 time.sleep(0.1)
  21. # 点击播放
  22. def buttonPlayClick():
  23.     buttonNext['state'] = 'normal'
  24.     buttonPrev['state'] = 'normal'
  25.     # 选择要播放的音乐文件夹
  26.     if pause_resume.get() == '播放':
  27.         pause_resume.set('暂停')
  28.         global folder
  29.         if not folder:
  30.             folder = tkinter.filedialog.askdirectory()
  31.         if not folder:
  32.             return
  33.         global playing
  34.         playing = True
  35.         # 创建一个线程来播放音乐,当前主线程用来接收用户操作
  36.         t = threading.Thread(target=play)
  37.         t.start()
  38.     elif pause_resume.get() == '暂停':
  39.         # pygame.mixer.init()
  40.         pygame.mixer.music.pause()
  41.         pause_resume.set('继续')
  42.     elif pause_resume.get() == '继续':
  43.         # pygame.mixer.init()
  44.         pygame.mixer.music.unpause()
  45.         pause_resume.set('暂停')

停止播放

  1. def buttonStopClick():
  2.     global playing
  3.     playing = False
  4.     pygame.mixer.music.stop()

下一首

  1. def buttonNextClick():
  2.     global playing
  3.     playing = False
  4.     pygame.mixer.music.stop()
  5.     global num
  6.     if len(res) == num:
  7.         num = 0
  8.     playing = True
  9.     # 创建线程播放音乐,主线程用来接收用户操作
  10.     t = threading.Thread(target=play)
  11.     t.start()

上一首

  1. def buttonPrevClick():
  2.     global playing
  3.     playing = False
  4.     pygame.mixer.music.stop()
  5.     #
  6.     # pygame.mixer.quit()
  7.     global num
  8.     # num += 1
  9.     # num -= 1
  10.     if num == 0:
  11.         num = len(res) - 2
  12.         # num -= 1
  13.     elif num == len(res) - 1:
  14.         num -= 2
  15.     else:
  16.         num -= 2
  17.         # num -= 1
  18.     print(num)
  19.     playing = True
  20.     # 创建一个线程来播放音乐,当前主线程用来接收用户操作
  21.     t = threading.Thread(target=play)
  22.     t.start()

音量控制

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

关闭窗口

  1. def closeWindow():
  2.     # 修改变量,结束线程中的循环
  3.     global playing
  4.     playing = False
  5.     time.sleep(0.3)
  6.     try:
  7.         # 停止播放,如果已停止,
  8.         # 再次停止时会抛出异常,所以放在异常处理结构中
  9.         pygame.mixer.music.stop()
  10.         pygame.mixer.quit()
  11.     except:
  12.         pass
  13.     root.destroy()

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

音乐播放器源码

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/空白诗007/article/detail/954685
推荐阅读
相关标签
  

闽ICP备14008679号