如何在 pygame 调音台中将 .wav 文件排队,然后循环播放该文件?由于 GUI 阻塞,我无法使用 time.sleep 或任何循环

How can I queue a .wav file in pygame mixer and then play that file in a loop? I cannot use time.sleep or any loops because of GUI blocking

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

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

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

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

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 解决了我的问题