Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Habilitar control entry en formulario (tkinter)
#1
BUenas tardes:

Tengo el siguiente codigo el cual es una funcion que genera un formulario secundario.

Código:
def FormEmpleados():
posx = 140
second = Toplevel()
second.geometry('600x600')
second.title("ABM EMPLEADOS")
#uso el argumento validatecommand para pasar una función que
#chequee si cada carácter agregado es válido.
validatecommand = second.register(is_valid_char)

def ActivarControles():
print( "entro" )
entry2.state = "enabled"

#labels
label1 = Label(second, text="NOMBRE:", font='Helvetica 10 bold' )
label1.place( x=55, y =18)
label2 = Label(second, text="APELLIDO:", font='Helvetica 10 bold')
label2.place( x=55, y =57)
label3 = Label(second, text="NRO.DOCUMENTO:", font='Helvetica 10 bold')
label3.place( x=10, y =98)
# cajas de texto
entry1 = Entry(second, width=40, state="disabled")
entry1.place( x=posx, y=20 )

entry2 = Entry(second,width=40, state="disabled")
entry2.place( x=posx, y=60 )
#agrego el validatecommand al entry3
entry3 = Entry( second,width=40, validate="key", validatecommand=(validatecommand, "%S"), state="disabled" )
entry3.place( x=posx+110, y=100 )

# buttons
boton = Button( second, width=10, text ="NUEVO", command=ActivarControles )
boton.place( x=posx, y=140 )


boton1 = Button( second, width=10, text ="GUARDAR")
boton1.place( x=posx, y=180 )
boton1.configure(state='disabled')
#combo
combo = ttk.Combobox(second, width = 10, state="disabled", values=["DNI", "CUIT", "PASAPORTE"])
combo.state="readonly",
combo.place( x= posx, y = 100 )

funciona todo ok , salvo el tema de que el boton nuevo tiene como comando asignado

la funcion

Código:
def ActivarControles():
print( "entro" )
entry2.state = "enabled"

la funcion se ejecuta porque el print que puse lo ejecuta , pero lo que no hace es habilitarle el entry ( no se eejcuta el entry2.state = "enabled"

desde ya gracias a los que puedan ayudarme
Responder
#2
Hola, bienvenido.

La forma correcta de habilitar un control es:

Código:
entry2["state"] = "normal"

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
(26-10-2023, 10:55 PM)Francisco escribió: Hola, bienvenido.

La forma correcta de habilitar un control es:

Código:
entry2["state"] = "normal"

Saludos

muchas Gracias FRancisco !! ahi anduvo !!!
Responder
#4
De nada Smile
¡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)