繁体   English   中英

Python TQDM进度栏阻止Winsound

[英]Python tqdm progress bar blocks 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)

声音播放没有问题。

SND_ASYNCwinsound 文档中:

winsound.SND_ASYNC
    Return immediately, allowing sounds to play asynchronously.

因此, SND_ASYNC标志使对PlaySound的调用异步。 也就是说,它不等待声音完成再返回。 当您首先拨打电话,然后在进度条上有效休眠2秒钟时,此方法效果很好,因为在程序继续执行时声音有时间播放。

但是,当您在程序工作完成后以这种方式播放声音时, PlaySound函数会立即返回,然后该程序无需执行任何其他操作,因此它退出了,没有时间播放声音。

你可以通过改变此行为winsound.SND_FILENAME标志PlaySound代替,这将使得呼叫同步 ,等待声音完成返回前玩:

from tqdm import tqdm
import time
import winsound

for i in tqdm(range(100)):
    time.sleep(0.02)

winsound.PlaySound("Nastepna.wav", winsound.SND_FILENAME)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM