社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python tqdm进度条阻止winsound

Stasiek • 4 年前 • 628 次点击  

我遇到了WinSound和TQM的一些问题。我正在制作一个地下控制系统,使用进度条显示两个站点之间的距离,并播放站名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)

声音播放没有问题。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43430
 
628 次点击  
文章 [ 1 ]  |  最新文章 4 年前
cody
Reply   •   1 楼
cody    5 年前

winsound documentation SND_ASYNC :

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

所以 SNDY-ASYNC flag调用 PlaySound 异步。也就是说,它不会等到声音完成后再返回。当您首先进行调用,然后有效地在显示进度条的情况下休眠2秒时,此操作很好,因为在程序继续执行时,声音有时间播放。

但是当你在程序完成后用这种方式播放声音时, 播放声音 函数立即返回,然后程序就没有其他事情可做了,所以它退出,没有时间播放声音。

可以通过传递该行为来更改该行为。 winsound.SND_FILENAME 旗到 播放声音 相反,它会打电话给 同步的 ,等待声音播放完毕再返回:

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)