Python остановка функции

Как остановить функцию с помощью другой не вложенной функции? Я пытаюсь остановить функцию с помощью return но это не выходит. Функция vopr2var1btnfunc вызывается с помощью кнопки. Хочу остановить update_time1 с помощью vopr2var1btnfunc



def vopr1var1btnfunc():
    variant1btn.pack_forget()
    vopr1var1lbl.pack()
    vopr1var1ent.pack()
    vopr1var1btn.pack()
    global currentvariant
    currentvariant = 'Задания для 5-6 классов'
    vopr1timerlbl.pack(anchor=CENTER)
    format1 = '%H:%M:%S'
    target1 = datetime.now() + timedelta(minutes=2)
    global update_time1
    def update_time1():
        now = datetime.now()
        if now < target1:
            remains = round((target1 - now).total_seconds())
            text = time(second=remains % 60, minute=remains // 60).strftime(format1)
            vopr1timerlbl.config(text=text)                    
            vopr1timerlbl.after(1000, update_time1)
        else:
            vopr2var1()
    update_time1()
    
    


def vopr2var1btnfunc():
    if update_time1():
        return
    global vopr1var1answer
    vopr1var1answer = vopr1var1ent.get()
    vopr1var1lbl.pack_forget()
    vopr1var1ent.pack_forget()
    vopr1var1btn.pack_forget()
    vopr1timerlbl.pack_forget()
    vopr2var1lbl.pack()
    vopr2var1ent.pack()
    vopr2var1btn.pack()
    vopr2timerlbl.pack(anchor=CENTER)
    format2 = '%H:%M:%S'
    target2 = datetime.now() + timedelta(minutes=2)
    global update_time2
    def update_time2():
        now = datetime.now()
        if now < target2:
            remains = round((target2 - now).total_seconds())
            text = time(second=remains % 60, minute=remains // 60).strftime(format2)
            vopr2timerlbl.config(text=text)
            vopr2timerlbl.after(1000, update_time2)
        else:
            vopr3var1()
    update_time2()
    

Ответы (2 шт):

Автор решения: Master's Time

Чтобы остановить функцию надо просто написать return

def foo():
    if True:
        return
    print("Hi")!
foo()
→ Ссылка
Автор решения: retr 12

Я решил проблему созданием доп переменной. Когда происходит нажатие на кнопку то переменная а увеличивается до нужного значения и функция останавливается. В полном коде после каждого объявления переменной а глобальной а = а + 1.

def vopr1var1btnfunc():
    variant1btn.pack_forget()
    vopr1var1lbl.pack()
    vopr1var1ent.pack()
    vopr1var1btn.pack()
    global currentvariant
    currentvariant = 'Задания для 5-6 классов'
    vopr1timerlbl.pack(anchor=CENTER)
    format1 = '%H:%M:%S'
    target1 = datetime.now() + timedelta(minutes=2)
    global update_time1
    def update_time1():
        now = datetime.now()
        if a == 1: #на каждом вопросе переменная а возрастает на 1
            return
        if now < target1:
            remains = round((target1 - now).total_seconds())
            text = time(second=remains % 60, minute=remains // 60).strftime(format1)
            vopr1timerlbl.config(text=text)
            vopr1timerlbl.after(1000, update_time1)
        else:
            vopr2var1()        
    update_time1()
    
    


def vopr2var1btnfunc():
    global a #чтобы связать работу переменных а, я каждый раз объявлял глобальными
    a = 1
    global vopr1var1answer
    vopr1var1answer = vopr1var1ent.get()
    vopr1var1lbl.pack_forget()
    vopr1var1ent.pack_forget()
    vopr1var1btn.pack_forget()
    vopr1timerlbl.pack_forget()
    vopr2var1lbl.pack()
    vopr2var1ent.pack()
    vopr2var1btn.pack()
    vopr2timerlbl.pack(anchor=CENTER)
    format2 = '%H:%M:%S'
    target2 = datetime.now() + timedelta(minutes=2)
    global update_time2
    def update_time2():
        now = datetime.now()
        if a == 2:
            return
        if now < target2:
            remains = round((target2 - now).total_seconds())
            text = time(second=remains % 60, minute=remains // 60).strftime(format2)
            vopr2timerlbl.config(text=text)
            vopr2timerlbl.after(1000, update_time2)
        else:
            vopr3var1()
    update_time2()
→ Ссылка