Simplificar codigo.

Chema Cortes py en ls-l.org
Jue Sep 1 10:46:17 CEST 2005


Ariel Nardelli escribió:

> Te cuento que lo hice andar y ya estoy readaptando mi codigo :)
> Hice un par de modificaciones que las pongo aca asi le puede servir a
> cualquiera :)
> 
> En los eventos va..
> 
> # p_apno -3-  (Razon Social)
> EVT_TEXT_ENTER(self, 3,self.evt_get)
> EVT_TEXT(self, 3,self.evt_get)
> EVT_CHAR(self.tb_apno, lambda event:
> self.p_apno_ev_char(event,'tb_dire','tb_copo') )
> EVT_SET_FOCUS(self.tb_apno,self.evt_skip) # toma foco...
> EVT_KILL_FOCUS(self.tb_apno,self.p_apno_ev_df) # deja el foco...
> 
> Donde tb_dire es el proximo tb a procesar y tb_copo es el tb anterior y
> despues en mi rutina tengo...
> 
> def p_apno_ev_char(self,event,sig,ant):
>       # 353 es F12 y 352 es F11  (f12 avanza, f11 retrocede)
>        key = event.GetKeyCode()
>        if key == 9 or key == 353 or key == 13: # Tecla TAB o F12 Pasa foco.
>            va = 'self.'+sig+'.SetFocus()'
>            eval(va)
>            event.Skip()
>        if key == 352: # F11 retrocede
>            va = 'self.'+ant+'.SetFocus()'
>            eval(va)
>            event.Skip()
>        if key < WXK_SPACE or key == WXK_DELETE or key > 255:
>            event.Skip()
>            return
>        event.Skip()
> 
> Asi se pone "en foco" el proximo o anterior segun las teclas pulsadas...

Se podría evitar el eval()

    if key in (353,9,13): # Tecla TAB o F12 Pasa foco.
        tb=geattr(self,sig)
        tb.SetFocus()
        event.Skip()
    elif key == 352: # F11 retrocede
        tb=geattr(self,ant)
        tb.SetFocus()
        event.Skip()




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