Einstellbarer Timer für ein Projekt in der Arbeit
Variablen sollten nicht aus dem Nichts in Funktionen auftauchen. Alles was eine Funktion braucht, bekommt sie über ihre Argumente. Statt direkt Werte aus Labels zu nehmen, benutze IntVar:
Für Sound bietet sich pygame oder ein externes Programm an.
Code: Alles auswählen
from functools import partial
import tkinter as tk
def button_countdown(label, counter):
stand = counter.get() - 1
counter.set(stand)
label.configure(fg='red' if stand == 0 else 'black')
if stand > 0:
label.after(1000, button_countdown, label, counter)
def button_start(label, counter):
label.after(1000, button_countdown, label, counter)
def button_reset(label, counter, start_value):
counter.set(start_value.get())
label.configure(fg='black')
def main():
root = tk.Tk()
root.title('Countdown')
root.geometry('790x425')
counter = tk.IntVar(root)
start_value = tk.IntVar(root, 10)
label = tk.Label(root, textvariable=counter, font=('Arial', 190))
label.grid(column=2,row=2)
tk.Button(root, text='START', command=partial(button_start, label, counter), font=('Arial', 32)).grid(column=1,row=3)
tk.Button(root, text='RESET', command=partial(button_reset, label, counter, start_value), font=('Arial', 32)).grid(column=3,row=3)
tk.Label(root, text='Startwert').grid(column=1,row=4)
tk.Entry(root, textvariable=start_value).grid(column=2,row=4)
root.mainloop()
if __name__ == '__main__':
main()
