因此,我试图创建一个mm:ss形式的倒计时计时器,并在按下按钮时以1秒的间隔开始倒计时。我试图让计时器显示在按钮上也倒计时。这就是我目前所拥有的,我不知道该怎么做
import tkinter as tk
root = tk.Tk()
monsterTimer = '00:02'
def converter(sec):
m, s = map(int, sec.split(":"))
sec = m * 60 + s
sec -= 1
m, s = divmod(sec, 60)
sec = (f'{m:02d}:{s:02d}')
if sec != '00:00':
sec = 'end'
root.after(1000, converter)
return sec
def update_btn_text():
btn_text.set(converter(monsterTimer))
btn_text = tk.StringVar()
btn_text.set(monsterTimer)
btn = tk.Button(root, textvariable=btn_text, command=lambda: update_btn_text())
btn.place(x=10, y=10)
root.mainloop()
您的解决方案很接近,使用
after
而不是线程是正确的方法第一个问题是,当您使用
root.after
时,您正在调用converter
,但您没有传递参数。您需要将该行更改为如下所示,它将每秒调用converter(sec)
另一个问题是,如果是而不是00:00,则将
set
设置为'end'
。仅当为00:00时才需要设置:第三,您需要在调用
after
之前更新converter
内的按钮文本:最后,您根本不需要
update_btn
。它可以被删除,您可以从按钮命令中调用converter
综上所述,它看起来是这样的:
请尝试以下代码:
相关问题 更多 >
编程相关推荐