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

标签 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)

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

最佳答案

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


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

while pygame.mixer.music.get_busy():
  time.sleep(0.1)

关于python - 为什么 pygame 在退出之前需要 time.sleep 来播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54600297/

相关文章:

C++ 时间测量看起来太慢

python - 当我安装了 2 个不同的 Python 版本时安装 Pygame

python - Pygame.mixer.sound 的声音持续时间不够准确

使用 HTTPAdapter 的 Python 请求暂停数小时

python - Unicode解码错误: 'ascii' codec can't decode byte 0x87 in position 10: ordinal not in range(128)

android - 为特定时间设置计时器,而不是间隔

ruby-on-rails - ruby on rails 3.0 TimeWithZone 添加时间无法强制进入 Fixnum

python - Ubuntu 上 PIL 的问题

java - 为什么我们需要安装一个工具包(JDK)才能开始Java编程

python - 在 Windows 上使用内置 python 构建软件安装程序