为什么 pygame 在退出之前需要 time.sleep 来播放声音?

Tsu*_*una 2 python time pygame

我只是在用 Python 播放 MP3 文件并遇到了pygame

我让它播放音乐,但不知何故我需要添加time.sleep(SECONDS)才能播放音乐,否则当我在终端中运行时它会立即存在

这是有原因的还是我做得不对?

import pygame, time
from pygame.locals import *

pygame.mixer.pre_init(44100, 16, 2, 4096)
pygame.init()
pygame.mixer.music.load("path/to/mp3/file")
pygame.mixer.music.play()
time.sleep(32)
Run Code Online (Sandbox Code Playgroud)

我并不是想创建一个游戏或任何东西,正如我提到的,我只是在玩 Python

Cha*_*ffy 5

说到“为什么”——pygame.mixer.music并不是真正被设计为前台进程:其想法是,这是在其他程序运行时播放的背景音乐。如果用户说他们想退出游戏,如果游戏继续运行直到当前背景音乐结束,他们通常会感到恼火。


如果您想阻塞直到音乐结束,一种低效但简单的方法是使用检查完成的循环:

while pygame.mixer.music.get_busy():
  time.sleep(0.1)
Run Code Online (Sandbox Code Playgroud)