ich bin gerade dabei bei einer Gui von mir ein bisschen aufzuräumen und Zeilen zu sparen, bzw. auch Optimierungen zu machen um If-Abfragen zu vereinfachen.
Konkret bin ich momentan dabei Entry-Felder anzulegen und will den Input in diesen Felder Überwachen bzw. soll, wenn ungewollte Zeichen eingelesen werden diese Entfernt werden. Auch zu lange Eingaben sollen verhindert werden.
Da bin ich auf die Tolle Trace-Funktion gestoßen und habe auch mein Ziel erreicht nun aber wollte ich das bisschen kleiner aufschreiben um Übersicht zu behalten.
Also hier erstmal das was so wie es ist Funktioniert:
Code: Alles auswählen
textvars = []
self.entrys = []
for element in range(4):
textvars.append( tkinter.StringVar() )
self.entrys.append( tkinter.Entry( width=5, textvariable=textvars[element], justify="center") )
textvars[0].trace("w", lambda name, index, mode, var=textvars[0]: self.clean_input(self.entrys[0].get(),textvars[0]._name))
textvars[1].trace("w", lambda name, index, mode, var=textvars[1]: self.clean_input(self.entrys[1].get(),textvars[1]._name))
textvars[2].trace("w", lambda name, index, mode, var=textvars[2]: self.clean_input(self.entrys[2].get(),textvars[2]._name))
textvars[3].trace("w", lambda name, index, mode, var=textvars[3]: self.clean_input(self.entrys[3].get(),textvars[3]._name))
def clean_input(self, value, var):
print(value, var)
Ich wollte ledeglich die For um eine Zeile ergänzen, damit ich alles in einem Block fertig mache.
Code: Alles auswählen
for element in range(4):
textvars.append( tkinter.StringVar() )
self.entrys.append( tkinter.Entry( width=5, textvariable=textvars[element], justify="center") )
textvars[element].trace("w", lambda name, index, mode, var=textvars[element]: self.clean_input(self.entrys[element].get(),textvars[element]._name))