[Olpc-uruguay] Ayuda para remover un widget !!

Pablo Moleri pmoleri en gmail.com
Lun Oct 19 11:07:00 EDT 2009


Si, es así.
Todo lo que empieza con self. es de instancia.
Los atributos de clase se definen sin self. pero fuera de las funciones
(sinó serían variables comunes y corrientes.

class Ejemplo():

    atributo_de_clase = 0

    def funcion_de_instancia(self, par):
        self.atributo_de_instancia = 0
        variable_comun_y_corriente = 2

En Python "TODO" es un objeto, como las funciones también son objetos las
podés pasar por parámetro o asignar a variables:

if __name__ = "main":
   ej = Ejemplo()
   funcion = ej.funcion_de_instancia
   funcion("a") # Esta línea ejecuta la función ej.funcion_de_instancia("a")

Las funciones de clase (métodos estáticos) generalmente no se usan, y hay
que usar un recurso que no me acuerdo como era para poder declararlas.

Saludos

2009/10/19 Flavio Danesse <fdanesse en gmail.com>

> cuando declaras una variable mediante self.etc la estás guardadndo como
> atributo de clase de instancia ?
> Haces lo mismo con las funciones o métodos ?
> Al no ponerles self.etc son variables y metodos de clase y no de instancia?
>
>
>
>
> El 19 de octubre de 2009 12:36, Pablo Moleri <pmoleri en gmail.com> escribió:
>
>> Supongamos que tenés un contenedor principal que hereda de HBox:
>>
>> class Contenedor(gtk.HBox):
>>
>>    def __init__(self):
>>      ...
>>      boton = gtk:Button()
>>      self.add(button)
>>      button.connect("clicked", self.atender)
>>      ...
>>
>>      # me guardo como atributo una referencia al widget que va a mostrar
>> el archivo
>>      self.contenedor_imagen = gtk...
>>      self.add(contenedor_imagen)
>>      ...
>>
>>   self.atender():
>>      # código para seleccionar archivo
>>      # código para cargar el archivo en self.contenedor_imagen
>>      ...
>>
>> if __name__ = "main":
>>     gtk.Contenedor()
>>     gtk.main()
>>
>> Entonces al botón, en vez de conectarle una función propia, le conectás
>> una función del contenedor principal, de esa forma podés tener referencias a
>> los otros elementos que precisás.
>>
>> Saludos,
>> Pablo
>>
>>
>> 2009/10/19 Flavio Danesse <fdanesse en gmail.com>
>>
>>> No funciona, estoy bastante confundido, a ver si me pueden aclarar un par
>>> de cosas:
>>>
>>> Supongamos que tengo una clase que crea una interfase gráfica con varios
>>> contenedores y controles.
>>>
>>> ¿ Como defino métodos de instancia para poder acceder a sus controles
>>> desde fuera de la clase ?
>>>
>>> No logro encontrar la forma correcta de definir estos metodos o
>>> funciones.
>>> Lo que hago basicamente es instanciar la clase, esta crea toda una
>>> interfase.
>>> En esta interfase tengo un boton que al presionarlo me habre un cuadro de
>>> dialogo FileSelection, obviamente, al seleccionar el archivo que deseo
>>> abrir, debo cargarlo en un control que está en la interfase original pero no
>>> logro hacerlo, porque no se como acceder al control de la interfase
>>> original.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>> El 19 de octubre de 2009 11:55, Pablo Moleri <pmoleri en gmail.com>escribió:
>>>
>>> Hola,
>>>>
>>>> Supongo que lo que te está faltando es hacer remove() con la referencia
>>>> al calendario original.
>>>>
>>>> O sea, si agregaste así:
>>>>   mi_calendario = gtk.Calendar()
>>>>   mi_frame = gtk.Frame()
>>>>
>>>> entonces deberías eliminarlo usando la misma variable:
>>>>   mi_frame.remove(mi_calendario)
>>>>
>>>> En caso de que no tuvieras la referencia al calendario original, podrías
>>>> hacer algo así:
>>>>
>>>>   for child in mi_frame.get_children():
>>>>       mi_frame.remove(child)
>>>>
>>>> En realidad frame puede tener un único hijo, así que ese for va a iterar
>>>> una sola vez.
>>>>
>>>> Espero que te sea de ayuda,
>>>> Saludos!
>>>>
>>>> 2009/10/19 Flavio Danesse <fdanesse en gmail.com>
>>>>
>>>>>  *Hola gente, necesito una ayudita:*
>>>>>
>>>>>
>>>>>    - En una interfaz gráfica tengo un gtk.Frame y dentro tengo un
>>>>>    gtk.Calendar.
>>>>>    - Quiero quitar el calendar y poner otro control dentro del frame.
>>>>>    - Para hacer esto implementé una funcion que devuelve el frame
>>>>>    llamada get_Frame.
>>>>>    - En otra función, llamé a get_Frame y con el metodo remove de
>>>>>    gtk.Container intenté quitar el calendario, pero me devuelve error porque
>>>>>    segun dice, el metodo está recibiendo una instancia de objeto.
>>>>>
>>>>>
>>>>> No logro encontrar como hacerlo, a ver si alguien me tira un cable.
>>>>>
>>>>> _______________________________________________
>>>>> Olpc-uruguay mailing list
>>>>> Olpc-uruguay en lists.laptop.org
>>>>> http://lists.laptop.org/listinfo/olpc-uruguay
>>>>>
>>>>>
>>>>
>>>> _______________________________________________
>>>> Olpc-uruguay mailing list
>>>> Olpc-uruguay en lists.laptop.org
>>>> http://lists.laptop.org/listinfo/olpc-uruguay
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Olpc-uruguay mailing list
>>> Olpc-uruguay en lists.laptop.org
>>> http://lists.laptop.org/listinfo/olpc-uruguay
>>>
>>>
>>
>> _______________________________________________
>> Olpc-uruguay mailing list
>> Olpc-uruguay en lists.laptop.org
>> http://lists.laptop.org/listinfo/olpc-uruguay
>>
>>
>
> _______________________________________________
> Olpc-uruguay mailing list
> Olpc-uruguay en lists.laptop.org
> http://lists.laptop.org/listinfo/olpc-uruguay
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://lists.laptop.org/pipermail/olpc-uruguay/attachments/20091019/97190210/attachment.htm 


More information about the Olpc-uruguay mailing list