ich möchte das man in alle Tk.Entrys nur positive ganze Zahlen eintippen kann.
Ich weiß nicht was ich bei der Methode vor das register eintragen soll.
Programm, Tk, root und tk gehen nicht.
Es geht um die Methode only_numbers.
Code: Alles auswählen
import tkinter as tk
class Programm(tk.Tk):
def __init__(self):
super().__init__()
self.title("Test Ablaufprogramm")
self.wiederholungen = tk.IntVar(self, 5)
self.runde = tk.IntVar(self, 5)
self.arbeit = tk.IntVar(self, 7)
self.pause = tk.IntVar(self, 10)
self.ausgabe = tk.StringVar(self, "Ausgabe")
self.ausgabe_mitte = tk.StringVar(self, "")
tk.Label(self, text='Wiederholungen:').grid(row= 0,column = 1 )
tk.Entry(self,width=5, textvariable=self.wiederholungen).grid(row=0, column=2)
tk.Label(self, text='Runden:').grid(row=0,column=3)
tk.Entry(self,width=5, textvariable=self.runde).grid(row=0, column=4)
tk.Label(self, text='Arbeit:').grid(row=0,column=5)
tk.Entry(self,width=5, textvariable=self.arbeit).grid(row=0, column=6)
tk.Label(self, text='Pause:').grid(row=0,column=7)
tk.Entry(self,width=5, textvariable=self.pause).grid(row=0, column=8)
tk.Label(self, textvariable=self.ausgabe).grid(row=2,columnspan=10)
self.label_mitte = tk.Label(self,height = 10, width= 40, bg= 'green', textvariable = self.ausgabe_mitte, font = ("Arial", 20))
self.label_mitte.grid(row=3, columnspan=10)
self.button_start = tk.Button(self, text="Start", width=10, command=self.start)
self.button_start.grid(row=4, columnspan=10)
self.zählerWiederholungen = 0
def only_numbers(char):
return char.isdigit()
validation = root.register(only_numbers)
def start(self):
if self.button_start["state"] == "active":
self.button_start["state"] = "disabled"
else:
self.button_start["state"] = "active"
if self.zählerWiederholungen < self.wiederholungen.get() and self.zählerWiederholungen == 0:
self.zählerWiederholungen += 1
self.zählerRunde = 0
self.zählerArbeit = 0
self.zählerPause = 0
self.rundenstart()
elif self.zählerWiederholungen < self.wiederholungen.get() and self.zählerWiederholungen > 0:
self.zählerWiederholungen += 1
self.zählerRunde = 0
self.zählerArbeit = 0
self.zählerPause = 0
self.zählerUni = 0
self.zählerGlobal("Pause", 120)
else:
self.ausgabe.set("Ausgabe")
def rundenstart(self):
if self.zählerRunde <= self.runde.get() and self.zählerArbeit == self.zählerPause:
self.zählerRunde += 1
self.zählerUni = 0
self.zählerGlobal("Arbeit", self.arbeit.get())
self.zählerArbeit += 1
elif self.zählerRunde < self.runde.get() and self.zählerArbeit > self.zählerPause:
self.zählerUni = 0
self.zählerGlobal("Pause", self.pause.get())
self.zählerPause += 1
elif self.zählerRunde == self.runde.get() and self.zählerArbeit > self.zählerPause:
self.start()
def zählerGlobal(self, text, Zeit):
self.ausgabe.set(f"Wiederholung: {self.zählerWiederholungen} / {self.wiederholungen.get()} Runde: {self.zählerRunde} / {self.runde.get()} {text} {self.zählerUni+1} / {Zeit}")
self.zählerUni += 1
if text == "Arbeit":
self.label_mitte.config(bg='red')
self.ausgabe_mitte.set(Zeit+1-self.zählerUni)
elif text == "Pause":
self.label_mitte.config(bg='green')
self.ausgabe_mitte.set(Zeit+1-self.zählerUni)
arr1 = text
arr2 = Zeit
if self.zählerUni < Zeit+1:
self.after(1000, self.zählerGlobal, arr1, arr2)
else:
self.rundenstart()
def main():
root = Programm()
root.mainloop()
if __name__ == "__main__":
main()