Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
[tkinter] Validar con “key” y “focusout” en el mismo campo
#1
Hola Francisco, ¿Cómo están?
Bueno a pesar de que pude solo solucionar un montón de cosas(todas nuevas para mi) esta me supero.
No pongo nada de código porque considero que me voy a explicar de manera entendible.
Concretamente necesito validar si todos los campos contienen datos para habilitar el botón <Grabar>
y a  la vez que en este campo se ingresen solo numero decimal y me gustaría hacerlo de esta manera:

Código:
def validarFloat(S):
    return S.isdigit()

vcmd = (root.register(validarFloat), '%S')
tk.Entry(root, validate="key", validatecommand=vcmd).pack(expand=True)

Lo que ocurre es que lo tengo configurado en “focusout”, bueno es todo Huh Huh Huh .-

Slds. Daniel ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#2
Hola, Daniel.

Podés usar validate="all" para que la función se ejecute en todos los casos (tecla, focus in y focus out) y luego determinar desde el interior qué validación se debe ejecutar:

Código:
entry = ttk.Entry(
    validate="all",
    validatecommand=(root.register(validar_entry), "%V", "%S")
)

Y en tu función algo así:

Código:
def validar_entry(action, text):
    if action == "focusout":
        # Validación cuando se va el foco.
    elif action == "key":
        # Validación cuando se presiona una tecla.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Hola Francisco, ¿cómo están?
Gracias y perdón porque leí decenas de veces validate=”all”
pero evidentemente no preste la debida atención.-
Lo nuevo es que me surgió un inconveniente al poner un punto,
estoy haciendo mal la validación, si reniego demasiado luego te
consulto, bello resto de Sábado.-

Slds. Daniel ☕☕☕
abraza las cosas y personas malas como si fueran tu mas preciada joya,Son tus mas grandes maestros de paciencia sabiduría y amor y cuando lo abrazas dejan de causar dolor.-
Responder
#4
Hola, Daniel.

¡No hay problema! De nada. Muevo el tema a la sección de Aplicaciones de escritorio para que sea más ordenado.

Saludos
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)