0

我目前在使用 pygame 的混音器时遇到问题。我正在尝试排队一个文件(“Ex1.wav”)以在 pygame 中播放我正在尝试制作的应用程序。我想在播放之前的音频文件(“Ex2.wav”)之后循环 Ex2.wav,但我不能使用whileorfor循环,因为我使用的是 GuiZero,它不能有循环,因为它会阻止 GUI。也许一个代码示例更容易理解我想要理解的内容。

pygame.mixer.music.load("Ex2.wav")
pygame.mixer.music.play(10)
pygame.mixer.music.queue("Ex1.wav")
pygame.mixer.music.play(-1)

这并没有实现这一点。我试过了。我想做到这一点,以便在 Ex2.wav 完成之前不会播放和循环 Ex1.wav。就像我说的,由于 GUI 阻塞,我不能使用whilefor循环,出于同样的原因,我也不能使用time.sleep()或任何其他等待命令。

如果没有一个简单的解决方案,我理解。

4

1 回答 1

1

python Threading可能会解决您的问题

只需创建一个函数并在单独的线程中执行它,这样您的 GUI 就不会在迭代中冻结

import threading

def music_player ():
     for music in your_musics_list:
        pygame.mixer.music.load(music)
        pygame.mixer.music.play(10)

th = threading.Thread(target=music_player)

try:
    th.start()
except:
    pass

感谢@mattiiss 解决了我的问题

于 2021-12-19T18:32:19.373 回答