PyGTK y lambda w: actiongroup
Ernesto Revilla
erny en sicem.biz
Mie Mayo 11 01:03:39 CEST 2005
Si tienes una clase, lo mejor montas tus métodos concretos de clase:
class MiClase:
....
def funcion1(self,w):
...
def funcion2(self,w):
...
def crearInterfaz(self,....):
....
actiongroup=.... # crear actiongroup
actiongroup.add_actions=([
('AbrirArchivo', gtk.STOCK_OPEN, '_Abrir un archivo', None, None, lambda w: (self.funcion1, self.funcion2),
])
....
Si el Actiongroup en pygtk ignora el vacalor de los funciones que llama
al activar una acción, podrías especificar la acción como tupla:
lambda w: (self.obtenerArchivo("Juan", self.nombreArchivo),
self.otraAccion(...))
De lo contrario, puedes hacer una cosa algo más complicada...
justo delante del .add_actions escribes una función temporal dentro de
la misma función:
def crearInterfaz(self,....):
....
actiongroup=.... # crear actiongroup
def funcionTemporal(self,w):
... # lo que sea aqui
actiongroup.add_actions=([
('AbrirArchivo', gtk.STOCK_OPEN, '_Abrir un archivo', None, None, lambda w, self=self: funcionTemporal(self,w)),
])
....
Dado que funcionTemporal no es método ligado a una instancio (Bound
InstanceMethod), sino simplemente una función, le tenemos que dar la
instanstancia como primer argumento en el momento de invocarla.
Para ello fijo el segundo argumento de la expresión lambda (self=self)
que obtiene su valor en el momento de evaluar la expresión lambda
devolviendo una función (sin nombre).
Erny
Alfredo Cañadas escribió:
> El problema es que en la segunda función utilizo datos de la primera:
> modifico una cosa que uso en la segunda. Y eso con botones (connect y
> eso) si sé hacerlo, pero no con estos actiongroup y con lambda. Alguna
> idea?
>
>> From: Ernesto Revilla <erny en sicem.biz>
>> Reply-To: La lista de python en castellano <python-es en aditel.org>
>> To: La lista de python en castellano <python-es en aditel.org>
>> Subject: Re: [Python-es] PyGTK y lambda w: actiongroup
>> Date: Tue, 10 May 2005 18:15:02 +0200
>>
>>
>> Móntate una función para eso. Poner todo eso en un lambda lo hace muy
>> inlegible.
>>
>> Erny
>>
>>
>> Alfredo Cañadas escribió:
>>
>>> Saludos a la lista!!
>>> Tengo un problema para ejecutar un actiongroup. Antes no
>>> conseguía ejecutarlo, pero gracias a la lista ya lo solucionamos.
>>> Ahora mi problema es ejecutar 2 funciones de forma secuencial. Tengo:
>>> Funcion1:
>>> ('AbrirArchivo', gtk.STOCK_OPEN, '_Abrir un archivo', None,
>>> None, lambda w:
>>> self.obtenerArchivo("Juan", self.nombreArchivo)),
>>> ('AbrirArchivo2', gtk.STOCK_SAVE, '_Guardar un archivo',
>>> None, None, lambda w:
>>> self.abrirArchivo("Hola", textbuffer,
>>> self.nombreArchivo.get_text())),
>>>
>>> Y quiero que se ejecuten de una sola vez. Alguna ayudita?
>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en aditel.org
>>> http://listas.aditel.org/listinfo/python-es
>>>
>>
>>
>> --
>> =========================================
>> NO A LAS PATENTES DE SOFTWARE
>> http://proinnova.hispalinux.es
>> =========================================
>>
>> Ernesto Revilla
>> sicem sl
>> Pol. Ind. Juncaril, c/ Loja Parc. 7 Local 13
>> 18220 Albolote
>> http://www.sicem.biz
>> Tel: 637 716189
>> MSN: aerd en mx3.redestb.es
>> ICQ: 163888521
>>
>>
>>
>> ---
>> avast! Antivirus: Saliente mensaje limpio.
>> Base de datos de Virus (VPS): 0519-1, 10/05/2005
>> Comprobado en: 10/05/2005 18:15:03
>> avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
>> http://www.avast.com
>>
>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en aditel.org
>> http://listas.aditel.org/listinfo/python-es
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
--
=========================================
NO A LAS PATENTES DE SOFTWARE
http://proinnova.hispalinux.es
=========================================
Ernesto Revilla
sicem sl
Pol. Ind. Juncaril, c/ Loja Parc. 7 Local 13
18220 Albolote
http://www.sicem.biz
Tel: 637 716189
MSN: aerd en mx3.redestb.es
ICQ: 163888521
---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0519-1, 10/05/2005
Comprobado en: 11/05/2005 1:03:40
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com
Más información sobre la lista de distribución Python-es