目录
🌞(一)功能实现
(1)导入模块
(2)设置界面
(3)放置按钮
(4)显示已加载的音乐
(5)播放音乐
(6)停止播放
(7)下一首
(8)上一首
(9)音量控制
(10)关闭窗口
🌞(二)运行结果
🌞哈喽,大家好丫,你们的小郭子又来啦 ~
话不多说,直接上干货,嘻嘻嘻~
🌞(一)功能实现
(1)导入模块
import osimport timeimport tkinterimport tkinter.filedialogimport threadingimport pygame
(2)设置界面
(3)放置按钮
# 添加按钮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表示为水平放置,默认为竖直,竖直为verticals = 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)
(4)显示已加载的音乐
var2 = tkinter.StringVar()var2.set(ret)lb = tkinter.Listbox(root,listvariable=var2)lb.place(x=50,y=100,width=260,height=300)
(5)播放音乐
def play():if len(res):pygame.mixer.init()global numwhile 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 = 0else:num = num + 1netxMusic = 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 folderif not folder:folder = tkinter.filedialog.askdirectory()if not folder:returnglobal playingplaying = 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('暂停')
(6)停止播放
def buttonStopClick():global playingplaying = Falsepygame.mixer.music.stop()
(7)下一首
def buttonNextClick():global playingplaying = Falsepygame.mixer.music.stop()global numif len(res) == num:num = 0playing = True# 创建线程播放音乐,主线程用来接收用户操作t = threading.Thread(target=play)t.start()
(8)上一首
def buttonPrevClick():global playingplaying = Falsepygame.mixer.music.stop()## pygame.mixer.quit()global num# num += 1# num -= 1if num == 0:num = len(res) - 2# num -= 1elif num == len(res) - 1:num -= 2else:num -= 2# num -= 1print(num)playing = True# 创建一个线程来播放音乐,当前主线程用来接收用户操作t = threading.Thread(target=play)t.start()
(9)音量控制
def control_voice(value=0.5):pygame.mixer.music.set_volume(float(value))
(10)关闭窗口
def closeWindow():# 修改变量,结束线程中的循环global playingplaying = Falsetime.sleep(0.3)try:# 停止播放,如果已停止,# 再次停止时会抛出异常,所以放在异常处理结构中pygame.mixer.music.stop()pygame.mixer.quit()except:passroot.destroy()
🌞(二)运行结果
好啦,今天的分享到这里就结束啦~🌞🌞
觉得我分享的文章不错的话,可以关注一下哦,嘻嘻嘻🌞🌞