实现一款简单的音乐播放器

前言

利用最近闲暇时光,用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()

经过测试效果还不错

研究僧第一学期新鲜的生活已经过半啦,希望下半学期一切顺利

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值