Tkinter: ustaw StringVar po zdarzeniu <Key>, w tym wciśnięty klawisz

Za każdym razem, gdy postać zostaje wpisana doText widget, chcę pobrać zawartość tego widżetu i odjąć jego długość od pewnej liczby (zasadniczo „masz x znaków pozostawionych”).

AleStringVar() zawsze jest jedno wydarzenie. To z tego, co zbieram, zdarzenie jest przetwarzane zanim znak zostanie wprowadzony do widgetu Tekst. Oznacza to, że jeśli mam 3 postacie w polu i wchodzę na 4, toStringVar jest zaktualizowany, ale wciąż ma 3 znaki, a następnie aktualizuje do 4, gdy wprowadzam 5 znak.

Czy istnieje sposób na utrzymanie dwóch w kolejce?

Oto kod. Usunąłem nieistotne części.

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))

questionAnswers(2)

yourAnswerToTheQuestion