34.4. winsound — 针对windows的声音播放接口

winsound 模块可以访问windows平台提供的基本声音播放接口.它包含以下几个函数与常量.

winsound.Beep(frequency, duration)

让电脑发出"哔"的声音.frequency 参数指定声音的频率(以赫兹为单位),并且范围必须在37到32,767之间.duration 参数指定声音持续的毫秒数.若系统不能发声r,则抛出 RuntimeError 异常.

winsound.PlaySound(sound, flags)

从Platform API调用底层的PlaySound()函数。声音参数可以是文件名,音频数据作为字符串,或None其解释取决于标志的值,它可以是下面描述的常量的按位或的组合。如果声音参数为None,任何当前播放的波形声音都会停止。如果系统指示错误,则会引发RuntimeError

winsound.MessageBeep(type=MB_OK)

从Platform API调用底层的MessageBeep()函数。这播放在注册表中指定的声音。类型参数指定要播放的声音;可能的值为-1MB_ICONASTERISKMB_ICONEXCLAMATIONMB_ICONHANDMB_ICONQUESTION MB_OK,以下所有。-1产生“简单哔声”;这是最后的回退,如果声音不能播放否则。

winsound.SND_FILENAME

sound参数是WAV文件的名称。不要与SND_ALIAS一起使用。

winsound.SND_ALIAS

声音参数是来自注册表的声音关联名称。如果注册表不包含此类名称,请播放系统默认声音,除非还指定SND_NODEFAULT如果没有注册默认声音,引发RuntimeError不要与SND_FILENAME配合使用。

所有Win32系统至少支持以下;大多数系统支持更多:

PlaySound() 名称对应的控制面板声音名称
'SystemAsterisk'星号
'SystemExclamation'感叹
'SystemExit'退出Windows
'SystemHand'严重停止
'SystemQuestion'

例如:

import winsound
# Play Windows exit sound.
winsound.PlaySound("SystemExit", winsound.SND_ALIAS)

# Probably play Windows default sound, if any is registered (because
# "*" probably isn't the registered name of any sound).
winsound.PlaySound("*", winsound.SND_ALIAS)
winsound.SND_LOOP

反复播放声音。还必须使用SND_ASYNC标志来避免阻塞。不能与SND_MEMORY配合使用。

winsound.SND_MEMORY

PlaySound()声音参数是WAV文件的存储器映像,作为字符串。

注意

此模块不支持异步播放内存映像,因此此标志和SND_ASYNC的组合将引发RuntimeError

winsound.SND_PURGE

停止播放指定声音的所有实例。

注意

在现代Windows平台上不支持此标志。

winsound.SND_ASYNC

立即返回,允许声音异步播放。

winsound.SND_NODEFAULT

如果无法找到指定的声音,请不要播放系统默认声音。

winsound.SND_NOSTOP

不要打断当前正在播放的声音。

winsound.SND_NOWAIT

如果声音驱动器忙,立即返回。

注意

在现代Windows平台上不支持此标志。

winsound.MB_ICONASTERISK

播放SystemDefault声音。

winsound.MB_ICONEXCLAMATION

播放SystemExclamation声音。

winsound.MB_ICONHAND

播放SystemHand声音。

winsound.MB_ICONQUESTION

播放SystemQuestion声音。

winsound.MB_OK

播放SystemDefault声音。