将等待函数应用于进程[重复]

问题描述 投票:0回答:0

以下函数使用 pygame 播放歌曲。当歌曲结束时,它会打印“歌曲结束”。我插入该打印语句只是为了演示代码的逻辑 - 代码 检查状态,如果状态为 False(不忙),则歌曲结束。下面,您可以看到我调用了该函数两次,一个接一个地播放两个文件。但是,第一个文件会被跳过,只播放第二个文件。这是 pygame 的正常行为。如果你传递给它 10 个文件,播放第 10 个文件的调用将取代之前的 9 个调用,并且只有第 10 个文件会真正播放。

def PlaySong(filepath):
    def CheckIfFinished():
        status = pygame.mixer.music.get_busy()
        if status == False:
            print("song is finished")
        else:
            Root.after(250,CheckIfFinished)
    pygame.mixer.music.load(filepath)
    pygame.mixer.music.play(loops=0)
    Root.after(250,CheckIfFinished)


PlaySong("FileOne.mp3")
PlaySong("FileTwo.mp3")

我将如何更改此代码以便播放第一个文件,并且代码等待完成,然后再播放第二个文件?我知道这里可以应用某种等待功能,但我尝试过的都没有用。任何建议表示赞赏。

此问题已关闭,建议它与“如何使用 pygame 一个接一个地播放多个 mp3 文件”问题重复。但是,该问题涉及如何播放 mp3 文件,等待 30 秒,然后播放下一个 mp3 文件。我的问题涉及播放 mp3 文件,等到该文件完全播放完毕,然后再播放下一个文件。该文件可以是任何长度的 - 从 3 分钟的流行歌曲到 20 分钟的古典乐曲,或 2 小时的口语文件。恕我直言,根本不是同一个问题。

python python-3.x pygame
© www.soinside.com 2019 - 2024. All rights reserved.