我已经阅读了一个线程,该线程帮助将按钮[状态]设置为“正常”和“禁用”。
我真的很想知道并学习是否有条件/布尔的方式来做到这一点。
如何或者如果用户再次单击“开始”按钮,您是否可以通过按钮启动计时器而又不加速计时器?
我尝试了几次以实现一个条件,检查按钮是否被按下,时间是否小于原始可变量,等等。
但是每次计时器每次点击都会越来越快地倒计时。我觉得在理解条件/布尔值的工作原理方面存在问题。
from tkinter import *
root = Tk()
hold_time = 120
timer = False
def start_timer():
global timer
timer = True
hold_timer_start()
start_button['state'] = 'disabled'
def hold_timer_start():
global hold_time
global timer
if timer == True:
hold_time -= 1
hold_timer_label['text'] = hold_time
hold_timer_label.after(1000, hold_timer_start)
if hold_time == 0:
timer = False
def hold_timer_stop():
global hold_time
global timer
hold_time = 120
hold_timer_label['text'] = hold_time
timer = False
start_button['state'] = 'normal'
timer_frame = Frame(root, bg='gray25')
timer_frame.grid(row=0, column=0)
hold_timer_label = Label(timer_frame, text='Hold Time', bg='skyblue')
hold_timer_label.grid(row=0, column=1, sticky='ew', columnspan=2, pady=2)
hold_timer_label = Label(timer_frame, text=hold_time, bg='white')
hold_timer_label.grid(row=1, column=1, sticky='ew', columnspan=2, pady=2)
empty_label = Label(timer_frame, bg='gray25')
empty_label.grid(row=2, column=0)
start_button = Button(timer_frame, text='Start', bg='green', fg='black', command=start_timer)
start_button.grid(row=2, column=1)
stop_button = Button(timer_frame, text='Stop', bg='red', fg='black',command=hold_timer_stop)
stop_button.grid(row=2, column=2)
empty_label = Label(timer_frame, bg='gray25')
empty_label.grid(row=2, column=3)
root.mainloop()
我希望一旦按下按钮,计时器就开始倒计时,但是如果在计时器倒计时时再次按下,则无任何作用。
除非计时器为零或按下了停止按钮。
答案 0 :(得分:1)
您已经设置了timer
标志。您要做的就是检查它。
def start_timer():
global timer
if not timer:
timer = True
hold_timer_start()
#start_button['state'] = 'disabled'