You need to enable JavaScript to run this app. 如何使用Python winsound模块实现多个音频同时播放?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.16 06:15:04