赞
踩
闲来无事,做了MP3播放器练练手,主要是研究下PySimpleGUI的界面窗口设计。先上图,一睹为快。
提示:以下是本篇文章正文内容,代码亲测可用
要使用PySimpleGUI和Pygame来创建一个MP3播放器,你需要完成以下步骤:
需求定义:
实现步骤:
pip install PySimpleGUI
pip install pygame
这只是一个基本的实现步骤。根据你的具体需求和偏好,你可能需要添加更多的功能和元素。
本来想让文心给个代码,发现基本上用不成。只好自己研究修改了。
经过反复调整和测试,终于将代码调测完毕。目前已实现基本的选择MP3文件目录创建播放列表,播放、停止、暂停、继续的播放控制,以及调节播放音量的功能,已经可以完成最基本的播放。
import PySimpleGUI as sg
import pygame
import os,time
sg.theme('LightGreen')
layout = [
[sg.Text('选择MP3文件'), sg.Button('打开文件夹')],
[sg.Listbox(values=[], size=(40, 10), key='music_list', enable_events=True)],
[sg.Button('播放',key='play'), sg.Button('暂停',key='pause')],
[sg.Text('音量'), sg.Slider(range=(0, 100), default_value=50, orientation='horizontal', key='volume', enable_events=True,)],
]
window = sg.Window('MP3 播放器--IT里的交易员', layout)
# 创建播放列表
music_list = []
# 初始化播放器
pygame.mixer.init()
while True:
event, values = window.read()
if event == sg.WIN_CLOSED:
break
# 打开MP3文件所在文件夹,自动搜索MP3文件并创建播放列表
elif event == '打开文件夹':
folder_path = sg.popup_get_folder('请选择文件夹', initial_folder=os.getcwd())
for file_name in os.listdir(folder_path):
if file_name.endswith('.mp3'):
music_list.append(os.path.join(folder_path, file_name))
window['music_list'].update(music_list)
# 点击文件名后,自动开始播放,并将按钮修改为停止;如正在播放,点击计停止播放,并将按钮修改为播放
elif event == 'play':
if pygame.mixer.music.get_busy():
pygame.mixer.music.stop()
window['play'].update('播放')
else:
music = values['music_list'][0]
if music:
pygame.mixer.music.load(music)
pygame.mixer.music.play()
window['play'].update('停止')
else:
sg.popup("请打开MP3所在文件夹")
# 点击文件名后,自动开始播放
elif event == 'music_list' and len(values['music_list']):
music = values['music_list'][0]
if music:
pygame.mixer.music.load(music)
pygame.mixer.music.play()
window['play'].update('停止')
else:
sg.popup("请打开MP3所在文件夹")
# 如果正在播放按了暂停,修改为继续;如果取消暂停则改为暂停
elif event == 'pause':
if pygame.mixer.music.get_busy():
pygame.mixer.music.pause()
window['pause'].update('继续')
else:
pygame.mixer.music.unpause()
window['pause'].update('暂停')
# 中途可以通过修改播放音量,为0-1。需要将显示的数据除以100得到修改值
elif event == 'volume':
pygame.mixer.music.set_volume(values['volume'] / 100)
window.close()
本文通过对MP3文件播放,学习了PySimpleGUI和Pygame的基本操作,调测心得如下:
1、PySimpleGUI的layout 为界面构成,使用列表即可完成界面设计,这个很简单,对于设计简单的GUI交互界面确实很高效。key是操作这些界面元素的关键,当然也可以用界面文字,因为不好控制,最终增加了key来实现文字修改和操作。
2、event, values = window.read()。这里的event决定了相应哪个元素,values 可以读取到元素的值,也可以对其进行修改。
3、pygame.mixer即可实现MP3播放。具体函数见附录。
4、本来还想对播放列表实现增加删除,但觉得意义不大就取消了。
5、播放进度,和拖放进度功能,已实现播放中的显示,但是中途无法切换播放文件,和操作习惯不太相符,以后实现了再说。
** 这里将学习过程记录一下,方便后期继续学习。如对您有帮助,不妨收藏、点个赞再走。
**
pygame.mixer.music.load() —— 载入一个音乐文件用于播放
pygame.mixer.music.play() —— 开始播放音乐流
pygame.mixer.music.rewind() —— 重新开始播放音乐
pygame.mixer.music.stop() —— 结束音乐播放
pygame.mixer.music.pause() —— 暂停音乐播放
pygame.mixer.music.unpause() —— 恢复音乐播放
pygame.mixer.music.fadeout() —— 淡出的效果结束音乐播放
pygame.mixer.music.set_volume() —— 设置音量
pygame.mixer.music.get_volume() —— 获取音量
pygame.mixer.music.get_busy() —— 检查是否正在播放音乐
pygame.mixer.music.set_pos() —— 设置播放的位置
pygame.mixer.music.get_pos() —— 获取播放的位置
pygame.mixer.music.queue() —— 将一个音乐文件放入队列中,并排在当前播放的音乐之后
pygame.mixer.music.set_endevent() —— 当播放结束时发出一个事件
pygame.mixer.music.get_endevent() —— 获取播放结束时发送的事件
Pygame 中播放音乐的模块和 pygame.mixer 模块是密切联系的。使用音乐模块去控制在调音器上的音乐播放。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。