Tkinter y focos

Ernesto Revilla aerd en retemail.es
Mar Oct 29 19:40:02 CET 2002


Hola,

Los Entry de Tk tiene tres parámetros ('opciones') de validación:
validate:    cuándo se produce la validación:
'none,'key','focus','focusin','focusout','all'
vcmd:       función que se llama para realizar la validación, tiene que
devolver 1 ó 0
invcmd:    función que se llama si la validación es negativa.

El siguiente comportamiento no me gusta:
aunque la validación sea negativa, el foco sale a otro control.

Solución:
una vez que validación sea negativa, llamar de nuevo a focus() sobre el
control correspondiente.

Problema: se generan los siguientes eventos innecesarios:
'FocusOut' sobre el control que intento validar.
'FocusIn' y después 'FocusOut' sobre otro control (el siguiente o el que
haya pinchado con el ratón)
'FocusIn' de nuevo sobre el control que intento validar.

Con lo que además intentaría validar el otro control también. En caso que
FocusIn y FocusOut hiciesen cosas más complejas sobre la visualización
(cambiar colores, etc.) se vería un fliqueo.

¿Cómo puedo conseguir que el foco no se vaya (que no me deje salir del
control y no genere eventos FocusIn y FocusOut) mientras el control esté sin
validación positiva? ¿O como puedo ignorar estos eventos, por ejemplo
quitándolos de la cola de eventos? ¿Otras sugerencias?

Erny








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