600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 小案例:用Python制作音乐播放器

小案例:用Python制作音乐播放器

时间:2018-07-26 02:15:52

相关推荐

小案例:用Python制作音乐播放器

以下是音乐播放器要实现的功能:

1.可以通过打开存放音频文件夹来添加音频

2.可以播放和暂停音频

3.可以设置播放音量

需要实现音频播放器的模块:

1.pygame的音频播放功能

2.easygui的fileopenbox函数与os的listdir函数

3.播放器的窗口和布局我们就是使用PySimpleGUI库来实现。

先给大家展示下程序:

首先,我们需要导入所有库:

from pygame import mixerfrom PySimpleGUI import Window,Slider,B,T,LB,Framefrom easygui import diropenboxfrom os import listdir

然后是pygame音频的初始化:

mixer.init()mixer.music.set_volume(1) #设置音量(0 - 1)

要想选择播放的音频,我们就需要用列表来存储音频名称和路径

all_music = []#所有音频的名称all_music_path = [] #所有音频的路径

然后就是窗口布局:

layout = [[Frame('播放列表',[[T('音频播放列表',font = ('楷体',15))],[LB(all_music,size = (60,10),key = '-music_list-')],[T('正在播放: 空',font = ('楷体',12),key = '-playing-')]],font = ('楷体',16))],[T('音量设置',font = ('楷体',14)),Slider(range = (0,100),key = '-volume-',default_value = 100,orientation = 'h',enable_events = 1)],[B('添加音频',font = ('楷体',14)),B('开始播放',font = ('楷体',14)),B('暂停',font = ('楷体',14)),B('退出',font = ('楷体',14))]]

接下来就是窗口的事件处理:

window = Window('音乐播放器',layout)pause = False #做一个音频是否暂停的标记while 1:event,values = window.read()if event in (None,'退出'):breakmixer.music.set_volume(values['-volume-'] / 100)if event == '开始播放':if pause:mixer.music.unpause() #继续播放else:music = values['-music_list-']if not len(music):continueelse:music = music[0]if len(music) > 30:window['-playing-'].update('正在播放: {}...'.format(music[:36]))else:window['-playing-'].update('正在播放: {}'.format(music))mixer.music.load(all_music_path[all_music.index(music)])mixer.music.play()choose_music = Trueelif event == '添加音频':music_file = diropenbox()all_music_path = all_music_path + [music_file + '\\' + i for i in listdir(music_file) if i.endswith('.mp3')]all_music = all_music + [i.split('\\')[-1] for i in all_music_path]window['-music_list-'].update(all_music)elif event == '暂停':if mixer.music.get_busy():mixer.music.pause() #暂停pause = Trueelse:continuewindow.close() #循环结束后就关闭窗口

最后是源代码:

from pygame import mixerfrom PySimpleGUI import Window,Slider,B,T,LB,Framefrom easygui import diropenboxfrom os import listdirmixer.init()mixer.music.set_volume(1)all_music = []all_music_path = []layout = [[Frame('播放列表',[[T('音频播放列表',font = ('楷体',15))],[LB(all_music,size = (60,10),key = '-music_list-')],[T('正在播放: 空',font = ('楷体',12),key = '-playing-')]],font = ('楷体',16))],[T('音量设置',font = ('楷体',14)),Slider(range = (0,100),key = '-volume-',default_value = 100,orientation = 'h',enable_events = 1)],[B('添加音频',font = ('楷体',14)),B('开始播放',font = ('楷体',14)),B('暂停',font = ('楷体',14)),B('退出',font = ('楷体',14))]]window = Window('音乐播放器',layout)pause = Falsewhile 1:event,values = window.read()if event in (None,'退出'):breakprint(values)mixer.music.set_volume(values['-volume-'] / 100)if event == '开始播放':if pause:mixer.music.unpause() #继续播放print('继续播放')else:music = values['-music_list-']print(music)if not len(music):continueelse:music = music[0]if len(music) > 30:window['-playing-'].update('正在播放: {}...'.format(music[:36]))else:window['-playing-'].update('正在播放: {}'.format(music))mixer.music.load(all_music_path[all_music.index(music)])mixer.music.play()choose_music = Trueprint('重新播放')elif event == '添加音频':music_file = diropenbox()print(music_file)all_music_path = all_music_path + [music_file + '\\' + i for i in listdir(music_file) if i.endswith('.mp3')]all_music = all_music + [i.split('\\')[-1] for i in all_music_path]window['-music_list-'].update(all_music)elif event == '暂停':if mixer.music.get_busy():mixer.music.pause() #暂停pause = Trueelse:continuewindow.close()

以上就是全部内容,感谢大家的观看!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。