Saltar a contenido

Widget Menu (Men煤)

En esta lecci贸n vamos a aprender a crear un men煤 superior de toda la vida con varias secciones.

El primer widget men煤 que creamos hace referencia a la barra de men煤, de ah铆 que se le suele llamar menubar:

Note

from tkinter import *

root = Tk()

menubar = Menu(root)
root.config(menu=menubar)  # Lo asignamos a la base

root.mainloop()

Una vez creada la barra podemos comenzar a a帽adir submen煤s y comandos. Empecemos con los submen煤s:

Note

filemenu = Menu(menubar)
editmenu = Menu(menubar)
helpmenu = Menu(menubar)

Ya tenemos los submen煤s, pero todav铆a nos falta a帽adirlos a la barra de men煤:

Note

menubar.add_cascade(label="Archivo", menu=filemenu)
menubar.add_cascade(label="Editar", menu=editmenu)
menubar.add_cascade(label="Ayuda", menu=helpmenu)

Bien ya tenemos nuestra barra con los 3 submen煤s funcionando bien, pero ocurre algo raro, nos aparece una especie de elemento por defecto. Podemos hacer que desaparezca si indicamos el par谩metro tearoff=0:

Note

filemenu = Menu(menubar, tearoff=0)
editmenu = Menu(menubar, tearoff=0)
helpmenu = Menu(menubar, tearoff=0)

Ahora s铆 que lo tenemos bien, 驴pero est谩 demasiado vac铆o no? Vamos a a帽adir comandos de ejemplo en nuestros submen煤s:

Note

filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Nuevo")
filemenu.add_command(label="Abrir")
filemenu.add_command(label="Guardar")
filemenu.add_command(label="Cerrar")

Tambi茅n podemos agregar un separador y un comando de salir con root.quit:

Note

filemenu.add_separator()
filemenu.add_command(label="Salir", command=root.quit)

Tened en cuenta que deb茅is crear una funcionalidad para cada comando, pero como s贸lo estamos haciendo una prueba vamos a crear algunas opciones m谩s de ejemplo:

Note

editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Cortar")
editmenu.add_command(label="Copiar")
editmenu.add_command(label="Pegar")

helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Ayuda")
helpmenu.add_separator()
helpmenu.add_command(label="Acerca de...")

C贸digo final:

Note

from tkinter import *

# Configuraci贸n de la ra铆z
root = Tk()

menubar = Menu(root)
root.config(menu=menubar)

filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Nuevo")
filemenu.add_command(label="Abrir")
filemenu.add_command(label="Guardar")
filemenu.add_command(label="Cerrar")
filemenu.add_separator()
filemenu.add_command(label="Salir", command=root.quit)

editmenu = Menu(menubar, tearoff=0)
editmenu.add_command(label="Cortar")
editmenu.add_command(label="Copiar")
editmenu.add_command(label="Pegar")

helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="Ayuda")
helpmenu.add_separator()
helpmenu.add_command(label="Acerca de...")

menubar.add_cascade(label="Archivo", menu=filemenu)
menubar.add_cascade(label="Editar", menu=editmenu)
menubar.add_cascade(label="Ayuda", menu=helpmenu)

# Finalmente bucle de la aplicaci贸n
root.mainloop()

脷ltima edici贸n: 4 de Octubre de 2018