我在 tkinter 中有一個用標簽制作的倒計時。該函式接收秒數并開始倒計時為零。完成后,警報聲響起。
問題:警報在正確的時間響起,但倒計時在下降到 0 之前停留在 1 秒多幾秒。我該如何糾正?
def countdown(self, segundos):
self.guitimer['text'] = f'00:{segundos}'
if segundos > 0:
self.after(1000, self.countdown, segundos-1)
else:
play(AudioSegment.from_wav("assets/sounds/notification.wav"))
uj5u.com熱心網友回復:
您可以在播放聲音之前強制更新標簽:
def countdown(self, segundos):
self.guitimer['text'] = f'00:{segundos}'
if segundos > 0:
self.after(1000, self.countdown, segundos-1)
else:
self.guitimer.update_idletasks() # update the label
play(AudioSegment.from_wav("assets/sounds/notification.wav"))
或用于after()執行play(...):
def countdown(self, segundos):
self.guitimer['text'] = f'00:{segundos}'
if segundos > 0:
self.after(1000, self.countdown, segundos-1)
else:
self.after(1, play, AudioSegment.from_wav("assets/sounds/notification.wav"))
uj5u.com熱心網友回復:
我終于設法糾正它,當 segundos 為 0 時添加一個 elif 并等待 1 毫秒以上來播放聲音。
def countdown(self, segundos):
if segundos > 0:
self.guitimer['text'] = f'00:{segundos}'
self.after(1000, self.countdown, segundos-1)
elif segundos == 0:
self.guitimer['text'] = f'00:{segundos}'
self.after(1, self.countdown, segundos - 1)
print('Production time is finished. Extending production time')
else:
play(AudioSegment.from_wav("assets/sounds/notification.wav"))
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/365041.html
下一篇:將Row中的專案垂直居中
