[PyGTK] Varias señales apuntando al mismo metodo
Arnau Sanchez
arnau en ehas.org
Sab Sep 16 21:50:15 CEST 2006
Jesus Rodriguez escribió:
> Buenas, tengo un programa con varios text entry y un boton, yo inserto
> datos
> en las cajas y luego pulso el boton para recoger esos datos.
>
> No estaría mal poder pulsar intro en cualquier entry y que haga el mismo
> efecto que pular el boton, supongo que sería creando una señal en cada
> entry
> y apuntandola al evento del boton.
> El problema es que tengo bastantes entry's y seria una tarea pesada.
>
> Si no recuerdo mal, en windows se podia poner un boton por defecto, asi
> que
> si pulso INTRO en otro sitio donde no he especificado una cosa, usaria el
> evento del boton (o algo asi tengo entendido)
>
> ¿Como podría hacer esto entonces?
>
Forma 1: La más intuitiva (y cutre): capturas la señal "key-press-event" de la
ventana, compruebas que la pulsación es un Enter (mirando el event, campo
"string" o "keyval") y emites el evento de pulsación del botón.
Fomar 2: La que dices, más elegante: establecer el botón como widget por
defecto. Detalles más o menos sutiles:
- En todos los gtk.Entry tienes que llamar a set_activates_default(True) para
que al apretar Enter se propague la señal a la ventana (en caso contraria se
"come" la señal)
- En el botón que quieras poner por defecto, tienes que activar el flag
gtk.CAN_DEFAULT.
window = gtk.Window()
entry = gtk.Entry()
entry.set_activates_default(True)
button = gtk.Button()
button.set_flags(gtk.CAN_DEFAULT)
window.set_default(button)
http://www.pygtk.org/pygtk2reference/class-gtkwindow.html#method-gtkwindow--set-default
http://www.pygtk.org/pygtk2reference/class-gtkobject.html#method-gtkobject--set-flags
http://www.pygtk.org/pygtk2reference/class-gtkentry.html#method-gtkentry--set-activates-default
arnau
Más información sobre la lista de distribución Python-es