winsound — Windows 的聲音播放介面


winsound 模組提供了對 Windows 平臺提供的基本聲音播放機制的訪問。它包含函式和幾個常量。

winsound.Beep(frequency, duration)

使 PC 的揚聲器發出蜂鳴聲。frequency 引數指定聲音的頻率,以赫茲為單位,必須在 37 到 32,767 的範圍內。duration 引數指定聲音應持續的毫秒數。如果系統無法使揚聲器發出蜂鳴聲,則會引發 RuntimeError

winsound.PlaySound(sound, flags)

從平臺 API 呼叫底層的 PlaySound() 函式。sound 引數可以是檔名、系統聲音別名、作為類位元組物件的音訊資料,或者 None。它的解釋取決於 flags 的值,它可以是下面描述的常量的按位或組合。如果 sound 引數為 None,則停止任何當前正在播放的波形聲音。如果系統指示錯誤,則會引發 RuntimeError

winsound.MessageBeep(type=MB_OK)

從平臺 API 呼叫底層的 MessageBeep() 函式。這將播放登錄檔中指定的聲音。type 引數指定要播放的聲音;可能的值為 -1MB_ICONASTERISKMB_ICONEXCLAMATIONMB_ICONHANDMB_ICONQUESTIONMB_OK,所有這些都在下面描述。值 -1 會產生“簡單蜂鳴聲”;如果無法以其他方式播放聲音,這是最後的後備方案。如果系統指示錯誤,則會引發 RuntimeError

winsound.SND_FILENAME

sound 引數是 WAV 檔案的名稱。請勿與 SND_ALIAS 一起使用。

winsound.SND_ALIAS

sound 引數是登錄檔中的聲音關聯名稱。如果登錄檔不包含此類名稱,則播放系統預設聲音,除非還指定了 SND_NODEFAULT。如果沒有註冊預設聲音,則引發 RuntimeError。請勿與 SND_FILENAME 一起使用。

所有 Win32 系統都至少支援以下內容;大多數系統支援更多

PlaySound() name

相應的控制面板聲音名稱

'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

sound 引數到 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 聲音。