Cómo crear un menú desplegable en Tkinter
Tiene algunos métodos para crear un menú desplegable en Tkinter.
- Utilizar el Combobox tal y como se introdujo en el capítulo Combobox del tutorial de Tkinter.
- Utilice el Widget del menú de opciones.
El OptionMenu es un poco similar al widget Combobox pero ya está incluido en el propio Tkinter, por lo tanto, no necesita importar ttk como en el caso de Combobox
.
Ejemplo de Tkinter OptionMenu
import tkinter as tk
OptionList = ["Aries", "Taurus", "Gemini", "Cancer"]
app = tk.Tk()
app.geometry("100x200")
variable = tk.StringVar(app)
variable.set(OptionList[0])
opt = tk.OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=("Helvetica", 12))
opt.pack()
app.mainloop()
opt = tk.OptionMenu(app, variable, *OptionList)
app
es el padre del menú de opciones creado,
La variable
es la variable de texto inicial que tiene el tipo tk.StringVar
.
*OptionList
es la otra opción del menú. Se usa para desempaquetar el contenedor, como list
, escribe aquí.
Comando Bind al menú de opciones cuando el valor cambia
El OptionMenu
no podía enlazar un comando cuando se seleccionaba un nuevo valor de la lista de opciones. No se puede simplemente enlazar una función de devolución de llamada a él como widget de botones
tk.Button(app, text="Increase", width=30, command=change_label_number)
Necesitas usar un método de rastreo para adjuntar llamadas observer
a la variable OptionMenu
. Cada vez que la variable cambia, se activan las funciones de devolución de llamada.
Ejemplo de devolución de llamada en el OptionMenu
import tkinter as tk
OptionList = ["Aries", "Taurus", "Gemini", "Cancer"]
app = tk.Tk()
app.geometry("100x200")
variable = tk.StringVar(app)
variable.set(OptionList[0])
opt = tk.OptionMenu(app, variable, *OptionList)
opt.config(width=90, font=("Helvetica", 12))
opt.pack(side="top")
labelTest = tk.Label(text="", font=("Helvetica", 12), fg="red")
labelTest.pack(side="top")
def callback(*args):
labelTest.configure(text="The selected item is {}".format(variable.get()))
variable.trace("w", callback)
app.mainloop()
El observer
de la traza tiene tres modos,
modo de observador | Explicación |
---|---|
w |
cuando variable es escrito por alguien |
r |
cuando variable es leído por alguien |
u |
cuando se borra la variable . |
Entonces variable.trace("w", callback)
significa que llamará a la función callback
cuando variable
sea escrita o seleccionada por el usuario.
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook