我在使用winsound和tqdm时遇到了一些问题。我使用进度条制作了一个地下控制系统,该进度条显示了两个站点之间的距离,并播放了名为该站点名称的winsound。进度条显示出来,但是没有声音。
from tqdm import tqdm
import time
import winsound
for i in tqdm(range(100)):
time.sleep(0.02)
winsound.PlaySound("Nastepna.wav", winsound.SND_ASYNC)
无论何时我这样做
from tqdm import tqdm
import time
import winsound
winsound.PlaySound("Nastepna.wav", winsound.SND_ASYNC)
for i in tqdm(range(100)):
time.sleep(0.02)
声音播放没有问题。
答案 0 :(得分:0)
从winsound
的{{1}} documentation:
winsound.SND_ASYNC Return immediately, allowing sounds to play asynchronously.
因此,SND_ASYNC
标志使对SND_ASYNC
的调用是异步的。也就是说,它不等待声音完成再返回。当您先拨打电话,然后有效地休眠2秒钟以显示进度条时,此方法效果很好,因为在程序继续执行时声音有时间播放。
但是,当您在程序工作完成后以这种方式播放声音时,PlaySound
函数将立即返回,然后该程序无事可做,因此它退出了,没有时间播放声音玩。
您可以通过将PlaySound
标志传递给winsound.SND_FILENAME
来更改此行为,这将使调用同步,等待声音播放完毕后返回:< / p>
PlaySound