Я пытаюсь написать python код, который будет отображать секундомер в поле ввода, используя tkinter.
Моя идея состоит в том, чтобы использовать рекурсивную функцию для добавления 1 в блок каждую секунду, используя time.sleep (1).
Я в тупике - ничего не происходит, когда я нажимаю любую кнопку, и я не получайте коды ошибок, поэтому я понятия не имею, почему он не работает.
Единственный раз, когда я получаю что-либо в поле, это после нажатия кнопки Стоп, и всегда "00:00:00".
from tkinter import *
import time
root = Tk()
root.title("Stopwatch")
#box to display stopwatch
box = Entry(root, width = 20, borderwidth = 5)
box.grid(row = 0, column = 0)
#displays stopwatch in the box
def show_timer():
global hrs, mins, secs, timer
timer = str(hrs).zfill(2) + ":" + str(mins).zfill(2) + ":" + str(secs).zfill(2)
box.delete(0, END)
box.insert(0, timer)
#check = 1 allows the stopwatch to run
def set_check(i):
global check
check = i
return check
#actual function for stopwatch
def stopwatch():
global check, hrs, mins, secs
if check == 1:
time.sleep(1)
if int(secs) < 59:
secs += 1
return secs
elif mins < 59:
mins += 1
secs = 0
return mins, secs
else:
hrs += 1
mins = 0
secs = 0
return hrs, mins, secs
show_timer()
stopwatch()
else:
show_timer()
def start():
global hrs, mins, secs
hrs, mins, secs = 0, 0, 0
return hrs, mins, secs
show_timer()
set_check(1)
stopwatch()
def stop():
set_check(0)
stopwatch()
start_button = Button(root, text = "Start", command = start)
stop_button = Button(root, text = "Stop", command = stop)
start_button.grid(row = 1, column = 0)
stop_button.grid(row = 2, column = 0)
root.mainloop()