llamar un evento desde otro con wx

Oswaldo Hernández listas en soft-com.es
Mie Jun 18 12:55:02 CEST 2008


damufo escribió:
> 
> 
> Oswaldo Hernández escribiu:
>> damufo escribió:
>>> Hola:
>>> La cuestión es la siguiente, tengo un evento
>>>
>>>    def on_btn_abrir_button(self, event):
>>>        pass
>>>        event.Skip()
>>>
>>>    def on_lst_eventos_leftdclick(self, event):
>>>        self.on_btn_abrir_button(wx.EVT_BUTTON)
>>>        event.Skip()
>>>
>>> el error que me lanza es
>>> AttributeError: 'PyEventBinder' object has no attribute 'Skip'
>>> Alguien sabe que estoy haciendo mal?
>>> Pienso que el wx.EVT_BUTTON no es correcto pero no se que es lo que 
>>> tengo que poner.
>>
>> Si en 'on_btn_abrir_button' no utilizas niguna propiedad o metodo del 
>> evento puedes enviarle un None o un False:
>>
>> def on_btn_abrir_button(self, event):
>>     pass
>>     if event:
>>         event.Skip()
>>
>> def on_lst_eventos_leftdclick(self, event):
>>     self.on_btn_abrir_button(None)
>>     event.Skip()
>>
>> Personalmente creo que para los casos en que dos eventos realizan la 
>> misma acción es preferible:
>>     Crear una tercera funcion que es llamada por las dos funciones de 
>> evento.
>>     ó crear una unica funcion de eventos y hacer Bind de los dos 
>> eventos a la misma funcion
>>
> 
> Gracias!, el caso es que eso ya lo probara, los errores que dan son, 
> None y False, respectivamente.
> 
> AttributeError: 'NoneType' object has no attribute 'Skip'
> 
> AttributeError: 'bool' object has no attribute 'Skip'
> 

Si te fijas en lo que he enviado, antes de hacer el skip se comprueba event para evitar el error.

> He probado otra cosa que no da error y es conectar (no se si se dice 
> así) directamente el evento de la list con el botón de abrir
> 
>         self.lst_eventos.Bind(wx.EVT_LEFT_DCLICK,
>               self.on_btn_abrir_button)
> 
> 
> Cuento un poco de que va la cosa. Tengo un a lista en la se selecciona 
> una fila y despues, al pulsar sobre el botón "abrir" este habre otra 
> ventana en la que muestra la información de la fila seleccionada. Lo que 
> quería es que exista la posibilidad de que con un doble clic sobre la 
> fila se abra directamente la ventana.
> 
> No se si es esta la forma correca de hacerlo?
> 

Esa es la segunda posibilidad que te daba, y funciona correctamente siempre y cuando no utilices en 
la funcion las propiedades de event, ya que segun quien lo genere será un evento tipo EVT_BUTTON o 
EVT_LEFT_DCLICK y tienen metodos distitos.

Saludos,

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es