Python 如何在函数后停止tkinter

Python 如何在函数后停止tkinter,python,function,tkinter,Python,Function,Tkinter,我是Python的初学者,我正在尝试用tkinter创建一个计时器。我想有一个按钮,可以停止计时器,但我只是似乎不知道如何做到这一点。我曾尝试研究线程和类,但对于计时器这样简单的任务,我需要这些复杂的概念吗 import tkinter as tk from tkinter import * def countdown(count): # change text in label label['text'] = count if count > 0:

我是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停止计时器时,都有如此复杂的代码。提前谢谢你

您只需要在某个地方存储
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

通用方法返回一个整数标识符,您可以在\u cancel()之后将其传递给
,以防止其发生。很抱歉,我不明白如何在代码中实现这一点,我已经尝试阅读了after方法,但我真的无法理解它