python播放音乐模块,用Python做音乐播放器界面

  python播放音乐模块,用Python做音乐播放器界面

  本文主要介绍如何用Python制作一个简单的音乐播放器。文中的示例代码解释得很详细,对我们的学习或工作有一定的价值。有需要可以参考一下。

  00-1010前言备考知识点及所需模块环境完整代码效果展示导入模块界面按钮功能创建文件目录音乐读取功能展示加载的音乐播放音乐停止播放下一个上一个音量控制关闭窗口

  

目录

  就是用Python做一个简单的音乐播放器。事不宜迟,直接开始吧。

  当然,今天做到这一点,绝对不是最简单的音乐播放器,9行代码就够了。

  导入时间

  导入pygame

  File=r“歌曲路径”

  pygame.mixer.init()

  打印(“正在播放”,文件)

  track=pygame.mixer.music.load(文件)

  pygame.mixer.music.play()

  时间.睡眠(130)

  pygame.mixer.music.stop()

  

前言

  

准备工作

  1.1.python的基础知识

  2 .请求库

  3 .时间

  4 .皮游戏

  5.tkinter

  6.线

  

知识点和所需模块

  窗子

  pycharm 2021.2

  python 3.8

  

环境

  #导入

  导入操作系统

  导入时间

  导入tkinter

  导入tkinter.filedialog

  导入线程

  导入pygame # pip

  root=tkinter。Tk()

  Root.title(音乐播放器)

  root.geometry(460x600 500 100 )

  Root.resizable(False,False) #无法拉伸

  文件夹=

  res=[]

  数量=0

  now_music=

  def buttonChooseClick():

  添加文件夹

  :返回:

  全局文件夹

  全球研究

  如果不是文件夹:

  folder=tkinter . file dialog . ask directory()

  musics=[folder \\ 音乐

  对于os.listdir(文件夹)中的音乐\

  \

  if music . ends with((“. MP3”,)。wav ,。ogg))]

  ret=[]

  因为我喜欢音乐

  ret . append(I . split( \ \ )[1:])

  res.append(i.replace(\\ ,/))

  var2=tkinter。字符串变量()

  var2.set(ret)

  lb=tkinter。Listbox(root,listvariable=var2)

  磅位置(x=50,y=100,宽度=260,高度=300)

  如果不是文件夹:

  归零

  n

   global playing

   playing = True

   # 根据情况禁用和启用相应的按钮

   buttonPlay[state] = normal

   buttonStop[state] = normal

   # buttonPause[state] = normal

   pause_resume.set(播放)

  def play():

   """

   播放音乐

   :return:

   """

   if len(res):

   pygame.mixer.init()

   global num

   while playing:

   if not pygame.mixer.music.get_busy():

   netxMusic = res[num]

   print(netxMusic)

   print(num)

   pygame.mixer.music.load(netxMusic.encode())

   # 播放

   pygame.mixer.music.play(1)

   if len(res) -1 == num:

   num = 0

   else:

   num = num + 1

   netxMusic = netxMusic.split(\\)[1:]

   musicName.set(playing...... + .join(netxMusic))

   else:

   time.sleep(0.1)

  def buttonPlayClick():

   """

   点击播放

   :return:

   """

   buttonNext[state] = normal

   buttonPrev[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.init()

   pygame.mixer.music.pause()

   pause_resume.set(继续)

   elif pause_resume.get() == 继续:

   # pygame.mixer.init()

   pygame.mixer.music.unpause()

   pause_resume.set(暂停)

  def buttonStopClick():

   """

   停止播放

   :return:

   """

   global playing

   playing = False

   pygame.mixer.music.stop()

  def buttonNextClick():

   """

   下一首

   :return:

   """

   global playing

   playing = False

   pygame.mixer.music.stop()

   global num

   if len(res) == num:

   num = 0

   playing = True

   # 创建线程播放音乐,主线程用来接收用户操作

   t = threading.Thread(target=play)

   t.start()

  def closeWindow():

   """

   关闭窗口

   :return:

   """

   # 修改变量,结束线程中的循环

   global playing

   playing = False

   time.sleep(0.3)

   try:

   # 停止播放,如果已停止,

   # 再次停止时会抛出异常,所以放在异常处理结构中

   pygame.mixer.music.stop()

   pygame.mixer.quit()

   except:

   pass

   root.destroy()

  def control_voice(value=0.5):

   """

   声音控制

   :param value: 0.0-1.0

   :return:

   """

   pygame.mixer.music.set_volume(float(value))

  def buttonPrevClick():

   """

   上一首

   :return:

   """

   global playing

   playing = False

   pygame.mixer.music.stop()

   #

   # pygame.mixer.quit()

   global num

   # num += 1

   # num -= 1

   if num == 0:

   num = len(res) - 2

   # num -= 1

   elif num == len(res) - 1:

   num -= 2

   else:

   num -= 2

   # num -= 1

   print(num)

   playing = True

   # 创建一个线程来播放音乐,当前主线程用来接收用户操作

   t = threading.Thread(target=play)

   t.start()

  # 窗口关闭

  root.protocol(WM_DELETE_WINDOW, closeWindow)

  # 添加按钮

  buttonChoose = tkinter.Button(root,text=添加,command=buttonChooseClick)

  # 布局

  buttonChoose.place(x=50,y=10,width=50,height=20)

  # 播放按钮

  pause_resume = tkinter.StringVar(root,value=播放)

  buttonPlay = tkinter.Button(root,textvariable=pause_resume,command=buttonPlayClick)

  buttonPlay.place(x=190,y=10,width=50,height=20)

  buttonPlay[state] = disabled

  # 停止按钮

  buttonStop = tkinter.Button(root, text=停止,command=buttonStopClick)

  buttonStop.place(x=120, y=10, width=50, height=20)

  buttonStop[state] = disabled

  # 下一首

  buttonNext = tkinter.Button(root, text=下一首,command=buttonNextClick)

  buttonNext.place(x=260, y=10, width=50, height=20)

  buttonNext[state] = disabled

  # 上一首

  buttonPrev = tkinter.Button(root, text=上一首,command=buttonPrevClick)

  buttonPrev.place(x=330, y=10, width=50, height=20)

  buttonPrev[state] = disabled

  # 标签

  musicName = tkinter.StringVar(root, value=暂时没有播放音乐...)

  labelName = tkinter.Label(root, textvariable=musicName)

  labelName.place(x=10, y=30, width=260, height=20)

  # 音量控制

  # HORIZONTAL表示为水平放置,默认为竖直,竖直为vertical

  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=50, width=200)

  # 显示

  root.mainloop()

  

  

效果展示

  简易版的

  

  还有个半成品的,目前代码没写完

  

  

  

导入模块

  

import os

  import time

  import tkinter

  import tkinter.filedialog

  import threading

  import pygame

  

  

  

界面

  

root = tkinter.Tk()

  root.title(音乐播放器)

  root.geometry(460x600+500+100)

  root.resizable(False,False)  # 不能拉伸

  # 显示

  root.mainloop()

  

  

  

按钮

  

# 添加按钮

  buttonChoose = tkinter.Button(root,text=添加)

  # 布局

  buttonChoose.place(x=50,y=10,width=50,height=20)

  # 播放按钮

  pause_resume = tkinter.StringVar(root,value=播放)

  buttonPlay = tkinter.Button(root,textvariable=pause_resume)

  buttonPlay.place(x=190,y=10,width=50,height=20)

  buttonPlay[state] = disabled

  # 停止按钮

  buttonStop = tkinter.Button(root, text=停止)

  buttonStop.place(x=120, y=10, width=50, height=20)

  buttonStop[state] = disabled

  # 下一首

  buttonNext = tkinter.Button(root, text=下一首)

  buttonNext.place(x=260, y=10, width=50, height=20)

  buttonNext[state] = disabled

  # 上一首

  buttonPrev = tkinter.Button(root, text=上一首)

  buttonPrev.place(x=330, y=10, width=50, height=20)

  buttonPrev[state] = disabled

  # 标签

  musicName = tkinter.StringVar(root, value=暂时没有播放音乐...)

  labelName = tkinter.Label(root, textvariable=musicName)

  labelName.place(x=10, y=30, width=260, height=20)

  # 音量控制

  # HORIZONTAL表示为水平放置,默认为竖直,竖直为vertical

  s = tkinter.Scale(root, label=音量, from_=0, to=1, orient=tkinter.HORIZONTAL,

   length=240, showvalue=0, tickinterval=2, resolution=0.1)

  s.place(x=50, y=50, width=200)

  

  

  

功能

  

  

创建一个文件目录

  

folder =

  res = []

  num = 0

  now_music =

  

  

  

音乐读取功能

  

def buttonChooseClick():

   global folder

   global res

   if not folder:

   folder = tkinter.filedialog.askdirectory()

   musics = [folder + \\ + music

   for music in os.listdir(folder) \

  \

   if music.endswith((.mp3,.wav,.ogg))]

   ret = []

   for i in musics:

   ret.append(i.split(\\)[1:])

   res.append(i.replace(\\,/))

   if not folder:

   return

   global playing

   playing = True

   # 根据情况禁用和启用相应的按钮

   buttonPlay[state] = normal

   buttonStop[state] = normal

   # buttonPause[state] = normal

   pause_resume.set(播放)

  

  

显示已加载的音乐

  

var2 = tkinter.StringVar()

  var2.set(ret)

  lb = tkinter.Listbox(root,listvariable=var2)

  lb.place(x=50,y=100,width=260,height=300)

  

  

  

  

播放音乐

  

def play():

   if len(res):

   pygame.mixer.init()

   global num

   while playing:

   if not pygame.mixer.music.get_busy():

   netxMusic = res[num]

   print(netxMusic)

   print(num)

   pygame.mixer.music.load(netxMusic.encode())

   # 播放

   pygame.mixer.music.play(1)

   if len(res) -1 == num:

   num = 0

   else:

   num = num + 1

   netxMusic = netxMusic.split(\\)[1:]

   musicName.set(playing...... + .join(netxMusic))

   else:

   time.sleep(0.1)

  # 点击播放

  def buttonPlayClick():

   buttonNext[state] = normal

   buttonPrev[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.init()

   pygame.mixer.music.pause()

   pause_resume.set(继续)

   elif pause_resume.get() == 继续:

   # pygame.mixer.init()

   pygame.mixer.music.unpause()

   pause_resume.set(暂停)

  

  

  

停止播放

  

def buttonStopClick():

   global playing

   playing = False

   pygame.mixer.music.stop()

  

  

  

下一首

  

def buttonNextClick():

   global playing

   playing = False

   pygame.mixer.music.stop()

   global num

   if len(res) == num:

   num = 0

   playing = True

   # 创建线程播放音乐,主线程用来接收用户操作

   t = threading.Thread(target=play)

   t.start()

  

  

  

上一首

  

def buttonPrevClick():

   global playing

   playing = False

   pygame.mixer.music.stop()

   #

   # pygame.mixer.quit()

   global num

   # num += 1

   # num -= 1

   if num == 0:

   num = len(res) - 2

   # num -= 1

   elif num == len(res) - 1:

   num -= 2

   else:

   num -= 2

   # num -= 1

   print(num)

   playing = True

   # 创建一个线程来播放音乐,当前主线程用来接收用户操作

   t = threading.Thread(target=play)

   t.start()

  

  

  

音量控制

  

def control_voice(value=0.5):

   pygame.mixer.music.set_volume(float(value))

  

  

  

关闭窗口

  

def closeWindow():

   # 修改变量,结束线程中的循环

   global playing

   playing = False

   time.sleep(0.3)

   try:

   # 停止播放,如果已停止,

   # 再次停止时会抛出异常,所以放在异常处理结构中

   pygame.mixer.music.stop()

   pygame.mixer.quit()

   except:

   pass

   root.destroy()

  

  到此这篇关于Python实现多功能音乐播放器详解的文章就介绍到这了,更多相关Python音乐播放器内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: