用户:
无人能比的懒骨头sans查看:1 回复:3 评论:1 创建时间:2020-08-21T17:41:33
【作品展示】

【作品介绍】
此作品运用了tkinter库和pygame中的mixer模块,呈现了音乐盒子的效果,有上一首、暂停/播放、下一首这3个功能,如有其它的类似创作,欢迎在评论区内发布
【作品源代码】
#导入库
from tkinter import * #用于显示图形化界面
from pygame import mixer #用于播放音乐
#####常量######
name = 'D:/ink0.37.3/songs/ink_bgm{}.mp3' #路径框架
volume = 0.1 #音量
music = 0 #记录当前播放音乐的序号
playing = 1 #记录播放状态(播放/暂停)
######记录路径######
path = []
#循环获取路径
for i in range(1,4):
path.append(name.format(i))
min_song = 0 #第一首歌曲的序号
max_song = len(path)-1 #最后一首歌曲的序号
#####初始化mixer模块,并设置好音量#####
mixer.init() #初始化mixer模块
mixer.music.set_volume(volume) #设置音量
def play_music(item): #用于播放音乐的函数
mixer.music.load(path[item]) #在列表中取一个路径,并加载
mixer.music.play(loops = -1) #演奏音乐
play_music(0) #演奏音乐
#####生成图形化界面######
root = Tk()
root.title('音乐盒子') #设置窗口名称
root.geometry('800x300+300+150') #设置窗口大小、位置
root.resizable(0,0) #让窗口不能最大化
######放置回调函数的类######
class Callback():
def play(self): #播放或暂停
global playing
playing += 1
if playing % 2: #通过取模运算获取布尔值,进行判断
mixer.music.unpause() #继续播放
else:
mixer.music.pause() #暂停
def last(self): #上一曲
global music
#调整曲目
if music == min_song:
music = max_song
else:
music -= 1
#演奏音乐
play_music(music)
def next(self): #下一曲
global music
#调整曲目
if music == max_song:
music = min_song
else:
music += 1
#演奏音乐
play_music(music)
callback = Callback() #实例化对象
######布局#######
label = Label(root,text = '音乐盒子',font = ('黑体',22)) #设置标题
label.place(x = 300,y = 100) #放入窗口内
#设置三个按钮,分别表示上一首、暂停/播放、下一首
'''
格式如下:
按钮名字 = Button(root, text=表示内容, font=(字体,字号), command=回调函数)
按钮名字.place(x=x坐标, y=y坐标)
'''
last = Button(root, text='上一首', font=('黑体', 12), command=callback.last)
last.place(x=100, y=250)
play = Button(root, text='暂停/播放', font=('黑体', 12),command = callback.play)
play.place(x=400, y=250)
next = Button(root, text='下一首', font=('黑体', 12),command = callback.next)
next.place(x=700, y=250)
#主循环
root.mainloop()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn
写的很好!
但是实际情况下没有人愿意为了一个播放器去重命名自己的音乐文件,你可以试试在程序初始化时直接把所有的音乐文件的文件名都加载成一个列表,上一首和下一首时直接在这个音乐列表中获取文件名即可
点赞0
评论