核心播放模块(pygame内核)
import time import pygame import easygui as gui file = r'D:\CloudMusic\G.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 os import tkinter import tkinter.filedialog import time import threading import pygame #实现音频播放 #第一步:搭建界面 root = tkinter.Tk() root.title('封亚飞的音乐播放器v1.0') #设置窗口大小和屏幕绝对位置 root.geometry('460x600+500+100') #固定窗口大小,设置窗口不可拉伸 root.resizable(False,False) folder = '' # 接收文件路径 默认为空 res=[] # num=0 now_music = '' #第二步:实现功能 def buttonChooseClick(): #添加文件函数 global folder global res #如果folder不为空,则···· if not folder: folder = tkinter.filedialog.askdirectory() #选择目录,返回目录名 musics = [folder + '\\' + music for 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: return global playing playing = True #根据情况禁用或启用相应按钮 bottonPlay['state'] = 'normal' bottonStop['state'] = 'normal' #buttonPause['state'] = 'normal' pause_resume.set('播放') #播放音乐函数 def play(): #初始化混响设备 if len(res): pygame.mixer.init() global num while 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=0 else: num +=1 nextMusci = 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=0 playing = True global t t = 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-=2 else: num-=2 print(num) playing = True global t t.threading.Thread(target=play) t.start() #关闭窗口函数 def closeWindows(): 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): 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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python,音乐播放
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
暂无“基于python实现音乐播放器代码实例”评论...
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。
更新动态
2024年11月24日
2024年11月24日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]