Jos*_*Kim 5 python windows python-3.x
所以我有这样的代码:
import winsound
from msvcrt import getch
sound_path = "Path to sound"
while True:
key= ord(getch())
if key == 27:
break
if key == 113: #theq key
winsound.PlaySound(sound_path, winsound.SND_FILENAME)
Run Code Online (Sandbox Code Playgroud)
因此,现在如果按“ q”键,它会播放相应的声音。但是,如果我在当前声音播放完毕之前一直按“ q”键,它将在当前声音播放完毕后播放。按下“ q”按钮后,我将如何处理呢?它将停止当前的杂音并播放下一个?
编辑:
进一步研究(Win7,Python3.6.1),Eswcvlads的答案是要走的路。使用该winsound.SND_ASYNC标志时,您可以立即播放另一种声音,并且当前正在播放的声音停止。
winsound.PlaySound(r'D:\seven_11.wav', winsound.SND_ASYNC)
Run Code Online (Sandbox Code Playgroud)
->玩seven_11
winsound.PlaySound(r'D:\seven_12.wav', winsound.SND_ASYNC)
Run Code Online (Sandbox Code Playgroud)
-> seven_11停止,seven_12开始播放
但是,要停止所有播放,我原来的方法仍然有效:
winsound.PlaySound(None, winsound.SND_PURGE)
Run Code Online (Sandbox Code Playgroud)
从文档:
winsound.PlaySound(sound, flags)...如果sound参数为None,则任何当前播放的波形声音都会停止。
因此,包括在调用PlaySound进行下一个播放之前,应在开始下一个播放之前停止播放。
从文档来看,默认情况下,PlaySound 是同步的,因此只有在声音完全播放后才会返回。因此,脚本仅在声音结束时才处理下一个键。要使其异步,请使用winsound.SND_ASYNC如下标志:
winsound.PlaySound(sound_path, winsound.SND_FILENAME | winsound.SND_ASYNC)
Run Code Online (Sandbox Code Playgroud)
小智 5
if key == 113: #theq key
winsound.Playsound(None, windsound.SND_FILENAME)
winsound.PlaySound(sound_path, winsound.SND_FILENAME)
Run Code Online (Sandbox Code Playgroud)
如果声音参数为“无”,则将停止任何当前播放的波形声音。在播放每个声音文件之前,也要这样做。
| 归档时间: |
|
| 查看次数: |
7084 次 |
| 最近记录: |