Tkinter: set StringVar após o evento <Key>, incluindo a tecla pressionada
Toda vez que um personagem é inserido em umText
widget, eu quero pegar o conteúdo desse widget e subtrair seu tamanho de um certo número (basicamente um "você tem x caracteres restantes").
Mas oStringVar()
é sempre um evento por trás. Isto é, pelo que eu entendo, porque o evento é processado antes do caractere ser inserido no widget Text. Isso significa que se eu tiver 3 caracteres no campo e eu inserir um 4º, oStringVar
é atualizado, mas ainda tem 3 caracteres, depois é atualizado para 4 quando eu insiro um 5º caractere.
Existe uma maneira de manter os dois na linha?
Aqui está algum código. Eu removi partes irrelevantes.
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))