[英]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_ASYNC
的winsound
文档中:
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.