Introducción a Tcl/Tk

De lleno, sin leer ni estudiar nada más, nos vamos a pegar varios cabezazos contra Tcl-Tk, habiendo visto el lenguaje de manera muy superficial y sin comprenderlo del todo. El que no arriesga no gana. Nos saltamos varios capítulos del manual hasta llegar al capítulo 10.

1- Introducción a TK.

Creamos un botón con la palabra button, su nombre (precedido de un punto) será «hola». Los atributos del botón van detrás de un guión. Text será el texto del botón, y command lo que hace al ser pulsado. Nuestro botón mostrará una frase (puts) en la consola.

button .hola -text «Hola Mundo» -command {puts «Hola a ti también»}

Para mostrar el botón escribimos

pack .hola -padx 15 -pady 15

Donde padx y pady son atributos de margen interno del botón. Para cambiar algún atributo se usa el comando configure.

.hola configure -text «Hasta pronto» -command {puts «Que vaya bien»}
.hola cget -text

Esto último nos da el valor del atributo width del botón «hola».

2- El Pack.

Un ejemplo de formulario (incompleto, sin flujo de datos) con varios elementos entry y label. Importante: no es tan relevante el orden de creación de los elementos como el de su empaquetado.

Esto es un ejemplo de un simple formulario, el botón no hace nada, no se guardan los datos. La ventana se vería como en la siguiente captura de pantalla.


frame .contenedor -width 600 -height 460 -bg grey
frame .contenedor.arriba -width 600 -height 200 -bg grey
label .contenedor.arriba.datos -text «Datos Personales»
frame .contenedor.arriba.izquierda -width 300 -height 100 -bg grey
frame .contenedor.arriba.derecha -width 300 -height 100 -bg grey

frame .contenedor.abajo -width 600 -height 260 -bg grey
label .contenedor.abajo.caract -text «Características»
frame .contenedor.abajo.izquierda -width 300 -height 260 -bg grey
frame .contenedor.abajo.derecha -width 300 -height 260 -bg grey
frame .contenedor.abajo.bajo -width 600 -height 30 -bg grey

pack .contenedor
pack .contenedor.arriba
pack .contenedor.arriba.datos -pady 6
pack .contenedor.arriba.izquierda -side left -padx 12 -pady 6
pack .contenedor.arriba.derecha -side right -padx 12 -pady 6

pack .contenedor.abajo -pady 6
pack .contenedor.abajo.caract -pady 6
pack .contenedor.abajo.izquierda -side left -padx 12
pack .contenedor.abajo.derecha -side right -padx 12

#3 – etiquetas y campos

foreach et {et1 et2 et3 et4} {
label .contenedor.arriba.izquierda.$et -bg grey
pack .contenedor.arriba.izquierda.$et -anchor w
}

.contenedor.arriba.izquierda.et1 configure -text «Nombre»
.contenedor.arriba.izquierda.et2 configure -text «Profesión»
.contenedor.arriba.izquierda.et3 configure -text «Raza»
.contenedor.arriba.izquierda.et4 configure -text «Alineamiento»

foreach campo {campo1 campo2 campo3 campo4} {
entry .contenedor.arriba.derecha.$campo
pack .contenedor.arriba.derecha.$campo
}

foreach car {car1 car2 car3 car4} {
label .contenedor.abajo.izquierda.$car -bg grey
pack .contenedor.abajo.izquierda.$car -anchor w
}

.contenedor.abajo.izquierda.car1 configure -text «Fuerza»
.contenedor.abajo.izquierda.car2 configure -text «Destreza»
.contenedor.abajo.izquierda.car3 configure -text «Constitución»
.contenedor.abajo.izquierda.car4 configure -text «Inteligencia»

foreach num {num1 num2 num3 num4} {
entry .contenedor.abajo.derecha.$num -width 5
pack .contenedor.abajo.derecha.$num
}

button .contenedor.boton -text «Guardar»
pack .contenedor.boton -side bottom -pady 6

Write a Reply or Comment

Your email address will not be published.