在包含声音文件路径的列表上循环

2024-04-29 12:20:53 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我计划做的是循环一个列表,其中包含我的声音文件的路径,并使用python中的pygame.mixer模块播放它们,但当我这样做时,我遇到的问题是pygame总是播放列表中最后一个索引最多的路径文件,其余的都被跳过。示例:如果我的列表包含2项:

music_list = ['abc.mp3', 'gef.mp3']
for music_index in range(len(music_list)):
    mixer.init()
    mixer.music.load(music_list[music_index])
    mixer.music.play()

then it never plays abc.mp3 file and directly plays the last file gef.mp3

Tags: 模块路径列表indexmusicpygamemp3list
3条回答

使用^{}加载声音文件并将其排队:

mixer.init()
mixer.music.load('abc.mp3')
mixer.music.play()
mixer.music.queue('gef.mp3')

在python中,您不需要使用范围来迭代列表中的项目,只需使用:

for music in music_list:
     ...
     mixer.music.load(music)
     ...

我会成功的

根据你的代码不起作用的原因,很可能是因为你不能同时播放两首歌,所以最后一首歌是在前几首歌的基础上播放的

我认为这是因为play()方法不会对代码进行分组,所以在启动音乐后,代码将继续。因此,您将开始播放第一首音乐,然后立即启动第二首音乐。你最终跳过了所有的音乐,只播放最后一首

相关问题 更多 >