簡體   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