Из документации winsound
на SND_ASYNC
:
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)