Saltar al contenido

¿Cómo detectar cuándo cambia un OptionMenu o Checkbutton?

Esta sección fue analizado por expertos para que tengas la garantía de la exactitud de este escrito.

Solución:

Muchos controles tkinter se pueden asociar con una variable. Para aquellos, puede poner un rastro en la variable para que se llame a alguna función cada vez que cambie la variable.

Consulte http://effbot.org/tkinterbook/variable.htm para obtener más información sobre los seguimientos de variables. Son una de las muchas funciones excelentes y novedosas de tk.

Para que se active un evento cuando se realiza una selección, configure la opción de comando para OptionMenu

ex.

def OptionMenu_SelectionEvent(event): # I'm not sure on the arguments here, it works though
    ## do something
    pass

var = StringVar()
var.set("one")
options = ["one", "two", "three"]
OptionMenu(frame, var, *(options), command = OptionMenu_SelectionEvent).pack()

Si está utilizando una clase de variable Tkinter como StringVar() para almacenar las variables en tu Tkinter OptionMenu o Checkbuttonpuedes usar su trace() método.

trace()básicamente, monitorea la variable cuando se lee o se escribe.

los trace() método toma 2 argumentos – mode y function callback.

trace(mode, callback)

  • El argumento de modo es uno de “r” (llamar al observador cuando alguien lee la variable), “w” (llamar cuando alguien escribe la variable) o “u” (indefinir; llamar cuando se elimina la variable).
  • El argumento de devolución de llamada es la llamada que desea realizar a la función cuando se cambia la variable.

Así es como se usa –

def callback(*args):
    print("variable changed!")

var = StringVar()
var.trace("w", callback)
var.set("hello")

Fuente: http://effbot.org/tkinterbook/variable.htm

Si para ti ha sido de provecho nuestro post, sería de mucha ayuda si lo compartes con otros juniors de esta manera nos ayudas a extender esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *