Como conectar uma variável ao widget de entrada?
-
22-09-2019 - |
Pergunta
Estou tentando associar uma variável a um widget de entrada do Tknter, de uma maneira que:
Sempre que altero o valor (o "conteúdo") da entrada, principalmente digitando algo nele, a variável recebe automaticamente o valor do que eu digitei. Sem que eu precise apertar um botão "Atualizar valor" ou algo assim primeiro.
Sempre que a variável é alterada (por alguma outra parte da programação), quero que o valor de entrada exibido seja ajustado automaticamente. Eu acredito que isso poderia funcionar através da textVariable.
Eu li o exemplo em http://effbot.org/tknterbook/entry.htm, mas não está me ajudando exatamente pelo que tenho em mente. Tenho a sensação de que existe uma maneira de garantir a primeira condição usando o "Validate" da entrada. Alguma ideia?
Solução
Eu acho que você quer algo assim. No exemplo abaixo, criei uma variável myvar
e atribuiu que fosse textvariable
de ambos a Label
e Entry
widgets. Dessa forma, ambos são acoplados e as alterações no widget de entrada refletirão automaticamente no rótulo.
Você também pode defina rastreamento em variáveis, por exemplo, para escrever para stdout.
from tkinter import *
root = Tk()
root.title("MyApp")
myvar = StringVar()
def mywarWritten(*args):
print "mywarWritten",myvar.get()
myvar.trace("w", mywarWritten)
label = Label(root, textvariable=myvar)
label.pack()
text_entry = Entry(root, textvariable=myvar)
text_entry.pack()
root.mainloop()