[pyar] [Fwd: Re: Uso de variable Global]

craf prog en vtr.net
Vie Dic 3 10:37:04 ART 2010


--------- Mensaje reenviado --------
> De: Daniel Moisset <dmoisset en machinalis.com>
> Reply-to: Python Argentina <pyar en python.org.ar>
> Para: Python Argentina <pyar en python.org.ar>
> Asunto: Re: [pyar] Uso de variable Global
> Fecha: Fri, 3 Dec 2010 09:53:58 -0300
> 
> 2010/12/2 craf <prog en vtr.net>:
> > Hola.
> >
> >
> > Estoy probando Tkinter y escribí este pequeño código el cual crea un
> > formulario con un textbox y un botón. Al ingresar un dato en el textbox
> > y presionar el botón, se imprime en la consola el valor.
> >
> >
> > Funciona, pero tuve que hacer uso de una variable Global.
> >
> > Pregunta: ¿Es valida esta forma?, ¿Se puede hacer de otra forma, sin
> > ocuparla?.
> > Nota: Necesariamente la funcion muestra debe estar fuera de la clase App
> 
> La restriccion en esa nota es rara, sino podnes la variable y la
> funcion dentro de la clase y queda mucho mas limpito. realmente es
> necesario.
> 
> Si lo es, capaz podes compartir la instancia igual. No se bien por que
> no entiendo el motivo de tu restriccion:
> 
> 
> from Tkinter import *
> 
> def muestra():
>    print(app.valor.get())
> 
> class App:
>    def __init__(self,master):
>        self.valor = StringVar()
>        e = Entry(master,textvariable=self.valor).pack()
>        b = Button(master,text='Mostrar',command=muestra).pack()
> 
> master = Tk()
> app = App(master)
> master.mainloop()
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
> 
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

Hola.

El motivo por el que lo quiero así, es para separar la creación de la
interfaz gráfica en un modulo y el código de la aplicación en otro.
El código anterior debiera quedar así sin uso de variable Global:

----CODE:------------------------------------------------------------

from Tkinter import *

def muestra(valor):
    print(valor.get())
 
class App:
    def __init__(self,master):
        valor = StringVar()
        e = Entry(master,textvariable=valor).pack()
        b =
Button(master,text='Mostrar',command=(lambda:muestra(valor))).pack()
 
master = Tk()
app = App(master)
master.mainloop()
--------------------------------------------------------------------

Saludos.

CRAF.




More information about the pyar mailing list