前言
利用最近闲暇时光,用pycharm实现了一款简单的音乐播放器
首先来看最后效果图
下面简单介绍实现的步骤
一、功能模块划分
麻雀虽小,五脏俱全,音乐播放器主要有以下功能:添加多首音乐到列表、播放、暂停、前后切换列表中的音乐、调整音量大小。所以我将软件划分为以下几个模块
- 界面设计模块
- 播放控制模块
- 切换歌曲模块
二、主要实现步骤
1.界面设计模块
设计UI界面主要需要以下几个步骤:
1.导入 tkinter 模块(import tkinter)
2.创建一个顶层窗口对象(调用 Tk()函数),用于容纳整个 GUI 应用。
3.在顶层窗口对象上构建所有的 GUI 控件(按钮、标签、文本框、消息框)
4.通过底层应用代码将这些 GUI 控件连接起来并确定控件的放置位置
5.进入主事件循环(调用 mainloop()函数
综合考虑界面美观性与功能,设计界面代码如下
root = tkinter.Tk()
root.title('Music Player')
root.geometry('400x400+500+100')
root.resizable(False, False)
root.config(background="#87CEEB")
#在播放器最上方添加名称
musicName = tkinter.StringVar(root, value='Music Player')
labelName = tkinter.Label(root, textvariable=musicName)
labelName.place(x=50, y=15, width=260, height=20)
# 添加各种功能按钮,并调整好尺寸,放置到合适的位置
buttonChoose = tkinter.Button(root, text='Add', command=buttonChooseClick)
buttonChoose.place(x=100, y=320, width=100, height=80)
pause_resume = tkinter.StringVar(root, value='Play')
buttonPlay = tkinter.Button(root, textvariable=pause_resume, command=buttonPlayClick)
buttonPlay.place(x=0, y=320, width=100, height=80)
buttonPlay['state'] = 'disabled'
buttonNext = tkinter.Button(root, text='Next', command=buttonNextClick)
buttonNext.place(x=300, y=320, width=100, height=80)
buttonNext['state'] = 'disabled'
buttonPrev = tkinter.Button(root, text='Previous', command=buttonPrevClick)
buttonPrev.place(x=200, y=320, width=100, height=80)
buttonPrev['state'] = 'disabled'
#添加调整音量的滑块
s = tkinter.Scale(root, label='音量', from_=0, to=1, orient=tkinter.VERTICAL,
length=200, showvalue=0, tickinterval=2, resolution=0.1, command=control_voice)
s.place(x=330, y=50, width=50)
root.mainloop()
设计出的界面
2、播放控制模块
读取音乐文件,将读取到的音乐文件存入songs[]列表中,然后将读取到的音乐文件在list1中展示出来
folder = tkinter.filedialog.askdirectory()
musics = [folder + '\\' + music
for music in os.listdir(folder)
if music.endswith(('.mp3', '.wav', '.ogg'))]
for i in musics:
songs.append(i.replace('\\', '/'))
print(songs)
v = tkinter.StringVar()
v.set(songs)
list1 = tkinter.Listbox(root, listvariable=v)
list1.place(x=50, y=50, width=260, height=200)
播放音乐主要得用到pygame中的mixer,这是pygame中加载和播放音乐的模块,也是这个音乐播放器的核心部分
将已经存入songs[]列表中的歌曲地址作为参数,播放音乐
#播放音乐
def play():
if len(songs):
pygame.mixer.init()
global num
while playing:
if not pygame.mixer.music.get_busy():
pygame.mixer.music.load(songs[num])
# 播放
pygame.mixer.music.play()
else:
time.sleep(0.1)
当然,在按下播放按钮后,要设置一个线程,调用play()播放音乐
#播放音乐的线程
t = threading.Thread(target=play)
t.start()
设置一个bool值类型的变量,通过改变这个变量的真\假来控制播放器的播放\暂停
elif pause_resume.get() == 'Pause':
playing = False
pygame.mixer.music.pause()
pause_resume.set('Play')
elif pause_resume.get() == 'Play':
playing = True
pygame.mixer.music.unpause()
pause_resume.set('Pause')
3、切换歌曲模块
设置数字num,用数字的加减来切换list1中的歌曲,当然,要设置一个线程,来播放音乐,下面是向后切歌的代码,向前切歌同理
def buttonNextClick():
global playing
playing = False
pygame.mixer.music.stop()
global num
print(num)
num += 1
playing = True
# 播放音乐的线程
t = threading.Thread(target=play)
t.start()
经过测试效果还不错
研究僧第一学期新鲜的生活已经过半啦,希望下半学期一切顺利