Bir fonksiyonu çağırdığımda çalışırken başka bir fonksiyonu çağırdığımda çalışan fonksiyonu kesmek istiyorum

Burada çevir butonu ile geriye ve ileti sayılacak bir sayaç var. Ve aynı etiket üstüne yazdırdığımda ileri say deyip geri say dediğimde diğer fonksiyonda çalışıp saylar bir ileri bir geri aynı yerde kalıyor. Tek başlarını ilk çalıştıklarında çalışıyor hatta tuhaflık ileri sayı iki, üç…defa bastığımda sayılar uçuyor. Bir şeyi yanlış yaptım ama neyi.

import tkinter as tk
import time
sayac=0
form=tk.Tk()
form.geometry(“400x400”)
form.title(“Digital”)
form.config(bg=“darkorange”)

x=tk.IntVar()

giris=tk.Entry(form, width=10,font=“arial 12 bold”, textvariable=x)
giris.place(x=300,y=60)

giris_lbl=tk. Label (text= "Giriş: ",bg= “darkorange”,font=“Times 12 bold”)
giris_lbl.place(x=10, y=50)

def cevir():
global sayac
sayac=int(x.get())
return sayac

def ilerisay():
global sayac
if sayac>=0:
Say_lbl. config(text=sayac)
sayac+=1
Say_lbl.after(300, ilerisay)

def gerisay():
global sayac
if sayac>=0:
Say_lbl.config(text=sayac)
sayac-=1
Say_lbl.after(300, gerisay)

buton1=tk.Button( form, text="Geri Say ", activebackground=‘red’,font=“arial 12 bold”,command=gerisay)
buton1.place(x=50,y=200)

buton2=tk.Button(form, text=‘İleri Say’,activebackground=“red”,font=“arial 12 bold”,command=ilerisay)
buton2.place(x=430,y=200)

buton3=tk.Button(form, text=‘Çevir’,activebackground=“red”, font=“arial 12 bold”,command=cevir)
buton3.place(x=780,y=200)

Say_lbl=tk. Label(text=“____”,bg=“darkorange”, font=‘Times 30 bold’)
Say_lbl.place(x=400,y=700)

form.mainloop()

Merhaba kolay gelsin. Senin kodu kendime göre düzenledim. Entry nin içine sayı girilince ve ileri buttonuna basınca ileri sayıyor, aynı şekilde geri buttonuna basınca geri sayıyor.

import tkinter as tk
import time
import threading

form=tk.Tk()

form.geometry("700x700")
form.title("Digital")
form.config(bg="darkorange")

x=tk.IntVar()

def ilerisay():
    global stop
    stop = 0
    sayac = int(giris.get())

    while True:
        sayac += 1
        time.sleep(0.5)
        Say_lbl.config(text = sayac)

        if stop == 1:
            break

def gerisay():
    global stop
    stop = 0
    sayac = int(giris.get())

    while True:
        sayac -= 1
        time.sleep(0.5)
        Say_lbl.config(text = sayac)
        
        if sayac == 0:
            break

        if stop == 1:
            break

def durdur():
    global stop
    stop = 1

def thread1():
    th1 = threading.Thread(target = ilerisay)
    th1.start()

def thread2():
    th2 = threading.Thread(target = gerisay)
    th2.start()

def thread3():
    th3 = threading.Thread(target = durdur)
    th3.start()

giris=tk.Entry(form, width=10,font="arial 12 bold", textvariable=x)
giris.pack()
#giris.place(x=300,y=60)

Say_lbl=tk. Label(form, text="xxx",bg="darkorange", font="Times 30 bold")
Say_lbl.pack()
#Say_lbl.place(x=400,y=700)

giris_lbl=tk. Label (text="Giriş: ",bg= "darkorange",font="Times 12 bold")
giris_lbl.pack()
#giris_lbl.place(x=10, y=50)

buton1=tk.Button( form, text="Geri Say ", activebackground="red",font="arial 12 bold",command=thread2)
buton1.pack()
#buton1.place(x=50,y=200)

buton2=tk.Button(form, text="İleri Say",activebackground="red",font="arial 12 bold",command=thread1)
buton2.pack()
#buton2.place(x=430,y=200)

buton3=tk.Button(form, text="durdur",activebackground="red",font="arial 12 bold",command=thread3)
buton3.pack()

form.mainloop()