Menú en Tcl/Tk de SpectTcl
Los menús son widgets a menudo imprescindibles para nuestras aplicaciones Tcl. El menú que mostramos a continuación es una simplificación de otro menú, con muchos más elementos, disponible en la librería de ejemplos de SpecTcl: una aplicación hecha en Tcl/Tk para hacer aplicaciones de un modo «visual», proporcionándonos herramientas para generar archivos Tcl muy rápidamente y ahorrándonos la tarea de escribir todo el código de los widgets. Podemos consultar los atributos de un widget y modificarlos de forma sencilla, y ver los cambios sin necesidad de cerrar la aplicación, además de muchas otras cosas.
![]() |
Menú Tcl/Tk del ejemplo de más abajo |
En otras anotaciones y ejemplos Tcl de este blog hemos usado el comando pack para «dibujar» los elementos en la pantalla. Nótese que en este ejemplo se usa el comando grid.
# Menú Tcl/Tk
# Contenedor del menú
set root «.»
# Elemento 1
###############
menubutton .mbOption
-indicatoron 1
-menu «.mbOption.m»
-relief raised
-textvariable mbOption_choice
# Hijo de Elemento 1
menu .mbOption.m
-background green
-tearoff 0
catch {
.mbOption.m configure
-font -*-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-*-*
}
# Hijos de Hijo de Elemento 1
.mbOption.m add radiobutton
-variable mbOption_choice
-label Artichoke
-underline 0
.mbOption.m add radiobutton
-variable mbOption_choice
-label {Brussel Sprout}
-underline 0
.mbOption.m add radiobutton
-variable mbOption_choice
-label Carrot
-underline 0
# Elemento 2
###############
menubutton .mbFruits
-menu «.mbFruits.fruitsMen»
-relief raised
-text Fruits
# Hijo de Elemento 2
menu .mbFruits.fruitsMen
-tearoff 0
catch {
.mbFruits.fruitsMen configure
-font -*-Helvetica-Bold-R-Normal-*-*-120-*-*-*-*-*-*
}
# Hijos de Hijo de Elemento 2
.mbFruits.fruitsMen add command
-command {puts Apple}
-label Apple
-underline 0
.mbFruits.fruitsMen add command
-command {puts Banana}
-label Banana
-underline 0
.mbFruits.fruitsMen add command
-command {puts Cucumber}
-label Cucumber
-underline 0
.mbFruits.fruitsMen add command
-command {puts Date}
-label Date
-underline 0
# Para representar el menu, geometry management
grid .mbOption -in $root -row 2 -column 1
grid .mbFruits -in $root -row 2 -column 2
# Comportamiento de la redimensión
grid rowconfigure $root 1 -weight 0 -minsize 30 -pad 0
grid rowconfigure $root 2 -weight 0 -minsize 30 -pad 0
grid columnconfigure $root 1 -weight 0 -minsize 30 -pad 0
grid columnconfigure $root 2 -weight 0 -minsize 30 -pad 0
# Opción seleccionada por defecto del Elemento 1
uplevel #0 set mbOption_choice Banana