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()