Причина зависания программы в том, что вы создали бесконечный цикл, который не позволяет tkinter когда-либо обрабатывать события. Tkinter является однопоточным и может работать только тогда, когда он способен обрабатывать постоянный поток событий. Вы предотвратили это с помощью этого бесконечного цикла:
while seconds != 60:
sleep(1.00)
seconds+= 1
secs.configure(text = seconds)
Быстрое решение - вызвать update
в этом цикле. Ваша программа будет все еще зависать на одну секунду, а затем станет активной всего за несколько миллисекунд, прежде чем снова замерзнет. Это очень неэффективный способ написания программы на tkinter.
Лучше было бы использовать метод after
, чтобы постоянно планировать выполнение вашей функции раз в секунду. Вероятно, на этом сайте есть десятки, а не сотни примеров этой техники. В двух словах это выглядит примерно так:
def update_clock()
global mins, seconds
seconds += 1
if seconds > 60:
seconds = 0
mins += 1
secs.configure(text = seconds)
window.after(1000, update_clock)
Затем вы вызываете эту функцию один раз в вашем методе start
, и она будет продолжаться каждую секунду, пока программа не закроется:
def start():
global mins, seconds
mins = 0
seconds = 0
update_clock()