[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