maximale Zeichenlänge in entry
Verfasst: Samstag 5. Mai 2018, 11:59
Hallo,
habe python zu meinem neuen Hobby gemacht und bewege mich auf Anfängerniveau.
Mein Problem:
Ich benutze tkinter (mit dem Modul ttk) und möchte in einem Entry-Feld die maximale Zeichenlänge auf 4 begrenzen. Leider habe ich keine Option für das Feld Entry finden können, in der man direkt die Zeichenlänge begrenzen kann. Ich habe es deswegen mit den Optionen validate und validatecommand versucht:
Das Problem, das ich hierbei hatte war, dass die Funktion "pruefung" aufgerufen wurde, offenbar noch bevor das neu getippte Zeichen in "zeiteingabe" hinterlegt war. Deswegen wurde immer erst noch ein 5tes Zeichen im Textfeld hinzugefügt, bevor mit dem nächsten Tastendruck die Zeichen im Eingabefeld nach der 4ten Stelle gelöscht wurden. Irgendwann bin ich auf die Idee gekommen es mit einem Timer zu versuchen und tatsächlich klappt es so, dass nur 4 Zeichen geschrieben werden können. Also dass die Funktion "pruefung" erst aufgerufen wird, nachdem die neue Eingabe in "zeiteingabe" hinterlegt wurde...
Das klingt jetzt vielleicht nach Luxusproblem, denn immerhin funktioniert der Code. Aber es kommt mir recht unelegant vor und ich könnte mir vorstellen, dass es da eine bessere Lösung gibt.
Vielleicht weiß da jemand was?
Grüße von der Büroklammer_xy
habe python zu meinem neuen Hobby gemacht und bewege mich auf Anfängerniveau.
Mein Problem:
Ich benutze tkinter (mit dem Modul ttk) und möchte in einem Entry-Feld die maximale Zeichenlänge auf 4 begrenzen. Leider habe ich keine Option für das Feld Entry finden können, in der man direkt die Zeichenlänge begrenzen kann. Ich habe es deswegen mit den Optionen validate und validatecommand versucht:
Code: Alles auswählen
def pruefung2():
if len(zeiteingabe.get()) > 4:
zeiteingabe.delete(4)
def pruefung():
z = Timer(0.00001, pruefung2)
z.start()
return True
(...)
zeiteingabe = ttk.Entry(mainframe, width=7, textvariable=zeitwert, validate="key", validatecommand=pruefung)
Das klingt jetzt vielleicht nach Luxusproblem, denn immerhin funktioniert der Code. Aber es kommt mir recht unelegant vor und ich könnte mir vorstellen, dass es da eine bessere Lösung gibt.
Vielleicht weiß da jemand was?
Grüße von der Büroklammer_xy