Python TQDM进度栏阻止Winsound

时间:2018-12-07 16:26:32

标签: python audio progress-bar winsound

我在使用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)

声音播放没有问题。

1 个答案:

答案 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