如何解决计时器每按一次按钮增加倒数速度的问题

时间:2019-06-03 08:41:13

标签: python tkinter

我已经阅读了一个线程,该线程帮助将按钮[状态]设置为“正常”和“禁用”。

我真的很想知道并学习是否有条件/布尔的方式来做到这一点。

如何或者如果用户再次单击“开始”按钮,您是否可以通过按钮启动计时器而又不加速计时器?

我尝试了几次以实现一个条件,检查按钮是否被按下,时间是否小于原始可变量,等等。

但是每次计时器每次点击都会越来越快地倒计时。我觉得在理解条件/布尔值的工作原理方面存在问题。

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()

我希望一旦按下按钮,计时器就开始倒计时,但是如果在计时器倒计时时再次按下,则无任何作用。

除非计时器为零或按下了停止按钮。

1 个答案:

答案 0 :(得分:1)

您已经设置了timer标志。您要做的就是检查它。

def start_timer():
    global timer
    if not timer:
        timer = True
        hold_timer_start()
        #start_button['state'] = 'disabled'