如何取消闹钟功能?

时间:2015-03-09 13:59:01

标签: python python-2.7 tkinter

我正在计算时间。我定义了一个实现它的功能。但我希望点击按钮时计时机停止。有没有办法做到这一点?

我可以定义另一个函数来停止计时功能或做任何其他事情来实现吗?

我的代码是:

from Tkinter import *
counter=0

def label_counter(label):
    def count():
        global counter
        counter+=1
        label.config(text=str(counter))
        label.after(1000,count)
    count()


root=Tk()
label=Label(root)
label.pack()
label_counter(label)

button=Button(root,text='Stop',command=root.destroy)
button.pack()

mainloop()

1 个答案:

答案 0 :(得分:2)

代码中最简单的修复方法是使用另一个全局变量为警报分配一个标识符:

from Tkinter import *
counter=0
alarm_id = None

def label_counter(label):

    def count():
        global counter
        global alarm_id
        counter+=1
        label.config(text=str(counter))
        alarm_id = label.after(1000,count)
    count()

然后您可以创建另一个按钮,并使用after_cancel方法(列出here)取消闹钟:

label.after_cancel(alarm_id)

请注意,您不应该使用全局变量。创建一个类并改为使用它的字段。

相关问题