2010-03-26 12 views
8

estoy tratando de asociar una variable con un widget de entrada Tkinter, de una manera que:¿Cómo conectar una variable al widget Entrada?

  1. Cada vez que cambia el valor (el "contenido") de la entrada, sobre todo escribiendo algo en él, a la variable se le asigna automáticamente el valor de lo que he tipeado. Sin que tenga que presionar un botón "Actualizar valor" o algo así primero.

  2. Cada vez que se cambia la variable (por alguna otra parte del programa), deseo que el valor de entrada que se muestra se ajuste automáticamente. Creo que esto podría funcionar a través de la variable de texto.

que lee el ejemplo http://effbot.org/tkinterbook/entry.htm, pero no me está ayudando exactamente para lo que tengo en mente. Tengo la sensación de que hay una forma de garantizar la primera condición con el uso de la entrada "validar". ¿Algunas ideas?

+2

¿Tal vez podría sugerir una alternativa? :) –

+4

¿Qué pasa con tkinter? De acuerdo con la página de inicio de python, es "... paquete de GUI estándar de hecho de Python". Y el "más comúnmente utilizado". – Sano98

+0

Variables de control: http://infohost.nmt.edu/tcc/help/pubs/tkinter/control-variables.html –

Respuesta

12

Creo que quieres algo como esto. En el siguiente ejemplo, creé una variable myvar y la asigné para que fuera textvariable de los widgets Label y Entry. De esta forma, ambos se acoplan y los cambios en el widget de Entrada se reflejarán automáticamente en Etiqueta.

También puede set trace en variables, p. Ej. escribir en 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() 
+0

Gracias, esto va en la dirección correcta, pero para trabajar con las variables, necesito convertirlas a variables python normales. Su ejemplo funciona porque los widgets comparten la misma variable de texto. Pero, ¿qué harías, por ejemplo, si quisieras imprimir el contenido de tu entrada al resultado estándar siempre que se cambie en lugar de escribirlo en una etiqueta tkinter? – Sano98

+1

Hace esto: 'text_entry.bind ('', handler)' donde 'handler' es una función que asigna su variable de python. Ver mi respuesta – Paul

+0

@ Sano98, he editado la respuesta, puede rastrear fácilmente las variables para lectura/escritura –

Cuestiones relacionadas