如何使用Python winsound模块实现多个音频同时播放?
问题修复方案
核心问题点
- 语法错误:击打音效播放代码中错误使用
.作为参数分隔符,且未正确引用winsound下的常量 - 阻塞逻辑问题:
winsound.PlaySound默认是同步阻塞模式,播放背景音乐时会卡住后续所有代码执行,无法响应键盘事件 - 标志位配置缺失:未配置异步播放、不打断当前播放的标志,无法实现多音频同时播放的效果
修正后代码
import turtle import winsound s = turtle.Screen() # 背景音乐配置:异步+循环播放,不阻塞后续逻辑 # 请确认bgm文件为wav格式,路径正确,建议补全文件后缀 winsound.PlaySound("bgm.wav", winsound.SND_FILENAME | winsound.SND_ASYNC | winsound.SND_LOOP) def hitsound(): # 击打音效配置:异步播放,不中断当前正在播放的背景音乐 winsound.PlaySound("hitsound1.wav", winsound.SND_FILENAME | winsound.SND_ASYNC | winsound.SND_NOSTOP) turtle.listen() s.onkeypress(hitsound, "space") s.mainloop()
标志位说明
SND_ASYNC:启用异步播放模式,调用播放接口后立即返回执行后续代码,不会阻塞程序SND_LOOP:循环播放指定音频,需要和SND_ASYNC搭配使用,否则会无限阻塞程序SND_NOSTOP:触发新的播放请求时,如果当前有音频正在播放,不会打断原有播放,直接执行后续逻辑
注意事项
winsound是Windows系统专属API,仅支持wav格式音频,无法在macOS、Linux系统下运行- 请确认音频文件和脚本在同一目录下,或者填写文件的绝对路径避免找不到文件的问题
内容的提问来源于stack exchange,提问作者Kewei Chen
相关产品推荐
相关产品推荐

