Tkinter: Setzt StringVar nach dem <Key> -Ereignis, einschließlich der gedrückten Taste

Jedes Mal, wenn ein Zeichen in a eingegeben wirdText Widget, ich möchte den Inhalt dieses Widgets abrufen und seine Länge von einer bestimmten Zahl abziehen (im Grunde genommen ein Deal mit "Sie haben noch x Zeichen").

Aber dieStringVar() ist immer ein Ereignis dahinter. Dies liegt, soweit ich weiß, daran, dass das Ereignis verarbeitet wird, bevor das Zeichen in das Text-Widget eingegeben wird. Dies bedeutet, dass, wenn ich 3 Zeichen im Feld habe und ein viertes eingebe, dasStringVar wird aktualisiert, ist aber immer noch 3 Zeichen lang. Wenn ich ein fünftes Zeichen eingebe, wird es auf 4 aktualisiert.

Gibt es eine Möglichkeit, die beiden in einer Linie zu halten?

Hier ist ein Code. Ich habe irrelevante Teile entfernt.

def __init__(self, master):
    self.char_count = StringVar()
    self.char_count.set("140 chars left")

    self.post_tweet = Text(self.master)
    self.post_tweet.bind("<Key>", self.count)
    self.post_tweet.grid(...)

    self.char_count = Label(self.master, textvariable=self.foo)
    self.char_count.grid(...)

def count(self):
    self.x = len(self.post_tweet.get(1.0, END))
    self.char_count.set(str(140 - self.x))

Antworten auf die Frage(2)

Ihre Antwort auf die Frage