Label automatisch updaten

Fragen zu Tkinter.
Antworten
Nachbar
User
Beiträge: 24
Registriert: Sonntag 10. Juli 2016, 08:12

Dienstag 23. Januar 2018, 19:28

Hallo Zusammen,

bin Anfänger und habe eine kleine GUI-Anwendung, in der ich innerhalb eines Labels gerne sichtbar mitzählen lassen will, wenn in einer Textbox Zeichen entfernt oder hinzugefügt werden.

Es gibt einen Button, der eine Funktion aufruft. Diese Funktion füllt eine Textbox mit einem String. Neben der Textbox gibt es ein Label, dass die Anzahl der Chars aus der Textbox ausgibt, alles passiert in der Funktion:

Code: Alles auswählen

# Anzahl in Label ausgeben
var = tk.StringVar()   
var.set(str(len(nachricht.get("1.0", 'end-1c'))))
lbl_anzahl = tk.Label(fenster, textvariable=var, font=('Arial',10))
Gibt es nun irgendeine Möglichkeit, mit jedem Char dass ich in der Textbox per backspace entferne, gleichzeitig das Label "mitzählen", also die jeweils veränderte Anzahl an Zeichen anzeigen zu lassen?
Sirius3
User
Beiträge: 8609
Registriert: Sonntag 21. Oktober 2012, 17:20

Dienstag 23. Januar 2018, 19:52

@Nachbar: `trace` ist Dein Freund:

Code: Alles auswählen

import tkinter as tk

root = tk.Tk()
var = tk.StringVar()
var.trace('w', lambda *args: var_len.set(len(var.get())))
var_len = tk.IntVar()

tk.Entry(root, textvar=var).pack()
tk.Label(root, textvar=var_len).pack()
root.mainloop()
Nachbar
User
Beiträge: 24
Registriert: Sonntag 10. Juli 2016, 08:12

Freitag 26. Januar 2018, 17:38

Vielen Dank! Hat etwas gedauert bis ich es hinbekommen habe, weil ich mit lamda noch nichts gemacht, und es deshalb "auseinader gedröselt" habe. Aber funktioniert. :)
Antworten