播放声音时出错

0 投票
1 回答
2756 浏览
提问于 2025-04-18 17:37

我正在尝试制作一个闹钟之类的东西,但当我运行我正在使用的代码时,出现了这个错误:

 File "C:\Python27\Salty.py", line 2, in <module>
    winsound.PlaySound('siren.wav')
 TypeError: PlaySound() takes exactly 2 arguments (1 given)

这是我正在运行的代码:
import winsound
winsound.PlaySound('siren.wav')

我知道这可能是个简单的错误,但现在很晚了。谢谢你的帮助!

1 个回答

2

winsound.PlaySound 这个函数需要两个参数:soundflagssound

可以是一个文件名、音频数据的字符串,或者是 None

(来自文档),而 flags 是一些选项的组合,比如 winsound.SND_FILENAME(表示 sound 参数是一个 .wav 文件的路径),winsound.SND_ALIAS(表示 sound 参数是一个内置的Windows声音的名称,具体可以查看文档),winsound.SND_LOOP(表示循环播放声音),winsound.SND_MEMORY(表示 sound 参数是一个 .wav 文件的内存图像),winsound.SND_PURGE(停止所有正在播放的指定声音,在现代Windows上不支持),winsound.SND_ASYNC(立即返回,允许声音异步播放),winsound.SND_NODEFAULT(如果找不到声音,则不播放默认声音),winsound.SND_NOSTOP(不打断当前正在播放的其他声音),以及 winsound.SND_NOWAIT(如果声音驱动程序忙,则立即返回)

你需要的是 winsound.SND_FILENAME 这个选项:

import winsound
winsound.PlaySound('siren.wav', winsound.SND_FILENAME)

或者,可以用一个函数来表示:

import winsound
def playSiren():
    winsound.PlaySound('siren.wav', winsound.SND_FILENAME)

补充说明:

可能需要提供完整的路径(例如 'C:\\whatever\\siren.wav'),而不仅仅是文件名(正如评论中讨论的那样)。

撰写回答