我是Python的初学者,我正在尝试在tkinter中创建一个计时器。我想要一个可以停止计时器的按钮,但是似乎无法弄清楚该如何做。我曾尝试研究线程和类,但对于计时器这样的简单任务,我需要这些复杂的概念吗?
import tkinter as tk
from tkinter import *
def countdown(count):
# change text in label
label['text'] = count
if count > 0:
# call countdown again after 1000ms (1s)
root.after(1000, countdown, count-1)
def stop():
# THIS IS THE FUNCTION I WANT TO USE TO STOP THE TIMER, HOWEVER I DO NOT KNOW HOW, RIGHT NOT I HAVE JUST PUT exit() WHICH QUITS THE WHOLE PROGRAM
countdown(exit())
root = tk.Tk()
root.geometry('600x600-200-0')
label = tk.Label(root)
label.place(x=35, y=15)
# call countdown first time
countdown(10)
# root.after(0, countdown, 5)
# Button, pressing it leads to greeting command
button = Button(text="OK", command=stop)
button.pack()
root.mainloop()
我只是想知道这个问题是否有一个简单的解决方案,因为当我研究所有tkinter停止计时器时都具有如此复杂的代码。预先谢谢你!
答案 0 :(得分:1)
您只需要在某个地方存储after()
函数中的工作编号即可。
job = None
def countdown(count):
# change text in label
label['text'] = count
if count > 0:
global job
# call countdown again after 1000ms (1s)
job = root.after(1000, countdown, count-1)
def stop():
global job
if job:
root.after_cancel(job)
job = None