[TKINTER] Uso de StringVars (Re: Disculpas)
Chema Cortes
py en ls-l.org
Jue Ago 4 10:17:17 CEST 2005
[[Hago copia a python-es, ya que puede interesar a álguien más]]
Martha Lucía Gallego López escribió:
> Te cuento que he intentado abrir el tutorial de python pero me dice
> que no puede encontrar la pagina.
Vuelve a probar, porque la página está ahí:
http://pyspanishdoc.sourceforge.net/tut/node8.html
También está en inglés en:
http://docs.python.org/tut/node8.html
> En cuanto a lo que me habia dicho de que usara
> "promedios.resumen_promedios" no me funciona corre pero no muestra
> nada, que será lo que pasa o que estare haciendo mal.
"promedios" es el nombre del módulo
"resumen_promedios" es una función dentro del módulo
Para ejecutar la función: promedios.resumen_promedios(dato1,dato2)
> De otra parte, no he podido hacer la resta entre los entries. Vuelvo a
> enviar código para ver si usted puede orientarme por favor en como
> debe ser el procedimiento:
>
> root=Tk()
> cuadro1=FloatEntry(root)
> cuadro1.pack()
> cuadro2=FloatEntry(root)
> cuadro2.pack()
> def calcular():
> resultado=cuadro2-cuadro1
> print resultado
>
> cuadro3=FloatEntry(root)
> cuadro3.pack()
> cuadro3.set(calcular(cuadro1.get(), cuadro2.get()))
> root.mainloop()
En mi mensaje te contaba que tenías que usar StringVars, y no veo que
las uses por ningún sitio. La resta es entre los valores de las
StringVars, no entre la Entries.
Como un ejemplo sin refinar demasiado:
from Tkinter import *
def recalcula(name,index,mode):
a=v1.get()
if a.isdigit():
a=int(a)
else:
v1.set(0)
a=0
b=v2.get()
if b.isdigit():
b=int(b)
else:
v2.set(0)
b=0
c=a-b
v3.set(c)
print "%d - %d = %d"%(a,b,c)
root=Tk()
v1=StringVar()
v1.set(str(0))
v2=StringVar()
v2.set(str(0))
v3=StringVar()
v3.set(str(0))
v1.trace_variable("w",recalcula)
v2.trace_variable("w",recalcula)
cuadro1=Entry(root,textvariable=v1)
cuadro1.pack()
cuadro2=Entry(root,textvariable=v2)
cuadro2.pack()
cuadro3=Entry(root,textvariable=v3)
cuadro3.pack()
root.mainloop()
La mejor forma de trabajar con Tkinter es creando nuevas clases donde
agrupar todas estas variables y traces. Por ejemplo, mira como lo hacen
aquí para implementar IntegerEntries:
http://effbot.org/zone/tkinter-entry-validate.htm
PD: por favor, sigue usando la lista ya que ésta es una época propicia
para desparecer por unos días y podrías estar esperando respuesta
inútilmente.
Más información sobre la lista de distribución Python-es