Gtk Entry Activarlo y aceleradores
Guillermo Heizenreder
gheize en gmail.com
Dom Sep 16 13:17:39 CEST 2007
El dom, 16-09-2007 a las 01:38 +0200, Arnau Sanchez escribió:
> Guillermo Heizenreder escribió:
>
> > def on_entry_activate(self,widget,other):
> > other.grab_focus()
> > def conect_entry_enter(self):
>
> Unos detalles de estilo: el PEP8 recomienda poner espacios después de
> las comas (y con razón, queda todo más claro). La docstring del método
> conect_entry_enter() se ve también un poco rara. En general, siempre que
> te desvíes del PEP8 dificultarás la lectura a otros programadores.
> Aunque quien esté libre de pecado que tire la primera piedra :-)
:S
Estoy tratando a los golpes de seguir la PEP8, hace poco que comenzé con
el lenguaje y siempre programe solo, pero ahora lo hacemos en equipo,
asique es muy cierto lo que decis vos de seguir los estandares.
>
> > self.entry_legajo_empleado.connect("activate",
> > self.on_entry_activate,
> > self.entry_apellido_empleado)
> > self.entry_apellido_empleado.connect("activate",
> > self.on_entry_activate,
> > self.entry_nombre_empleado)
> > self.entry_nombre_empleado.connect("activate",
> > self.on_entry_activate,
> > self.entry_codigo_clasificacion)
> > self.entry_codigo_clasificacion.connect("activate",
> > self.on_entry_activate,
> > self.entry_nombre_clasificacion)
>
> Estás usando on_entry_activate() como método, cuando de hecho no usa
> nada de la instancia (no accede a self). Tienes dos opciones: ponerla
> fuera de la clase (no muy adecuado, ya que costará encontrarla) o mejor,
> ponerla como función anidada, que es como te mostraré en el ejemplo (con
> la ventaja de que, si hiciera falta, sí podrías acceder a la instancia,
> ya que "self" queda en la clausura).
>
> ¿Ves que tu código es muy repetitivo? eso es porque hay un patrón, y
> debes sacar partido de ello. Podría quedar:
>
> def connect_entry_enter(self):
> def grab_focus(widget, other):
> other.grab_focus()
> path = (a, b, c, d)
> for index in xrange(len(path)-1):
> from0, to = path[index:index+2]
> from0.connect("activate", grab_focus, to)
>
> Donde a, b, c y d son los widgets puestos en el orden que quieras. Quizá
> el path debiera ser un parámetro de la función connect_entry_enter().
Funciono a la perfección.
> Si nos ponemos exquisitos, la función de extraer los pares también se
> puede abstraer:
>
> def groups(lst, n, step=1):
> for index in xrange(0, len(lst)-(n-1), step):
> yield lst[index:index+n]
>
> (si la entrada no fuera una lista/tupla sino un iterador, ver
> http://docs.python.org/lib/itertools-recipes.html)
>
> Y se usaría:
>
> for from0, to in groups(path, 2):
> from0.connect("activate", grab_focus, to)
>
> Espero que te sirva,
>
> arnau
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Muchas Gracias!.
Saludos!
:D
--
Heizenreder Guillermo
Code: http://code.google.com/u/gheize/
Blog: http://gheize.wordpress.com/
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es