Почему зависает while? Python

Я делаю таймер. Переменные: eskolo - количество минут(tkinter.Entry), eskolt - количество секунд(tkinter.Entry). Функция, вызывающая проблему:

def cvv():
eo = int(eskolo.get())
et = int(eskolt.get())
sl = int(eo * 60 + et)
while sl > 0:
    pass
if sl == 0:
    lo.configure(text="Таймер прошел")

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

Автор решения: Глеб

Во-первых, в питоне имеют значение отступы, а у вас они явно нарушены. Нужно так:

def cvv():
    eo = int(eskolo.get())
    et = int(eskolt.get())
    sl = int(eo * 60 + et)
    while sl > 0:
        pass
        if sl == 0:
            lo.configure(text="Таймер прошел")

Во-вторых, переменная sl в цикле никак не изменяется, условие sl > 0 всегда будет истинным и цикл будет выполняться вечно.

Таким образом, правильный код:

def cvv():
    eo = int(eskolo.get())
    et = int(eskolt.get())
    sl = int(eo * 60 + et)
    while sl > 0:
        sl -= 1
        if sl == 0:
            lo.configure(text="Таймер прошел")
            break
→ Ссылка