[英]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.