Informatica Grafica
C A P I T U L O10 Introducción a Tk

Tk es un toolkit para la programación bajo Windows. Inicialmente fue diseñado para el sistema X window, pero actualmente ha sido migrado a otros sitemas, entre ellos Windows 95 y NT. Tk provee un conjunto de comandos Tcl que permiten manipular widgets. Un widget es una ventana del interface gráfico que presenta un aspecto particular y una determinada utilidad. Entre los widgets se encuentran botones, barras de scroll, menús, y ventanas de texto. Tk también proporciona un widget de próposito general para el dibujo, denominado canvas, en el que pueden ser creados líneas, circulos, cuadrados, bitmaps, etc.

El sistema X window soporta herencia entre ventanas, y esto se refleja en los comandos de Tk La herencia en Tk significa que existe una ventana primaria o principal, y dentro de ella (también fuera de ella) pueden existir un número de ventanas hijas. De igual forma, las ventanas hijas pueden contener otras ventanas, y así sucesivamente.

Los widgets están bajo el control del geometry manager que controla su tamaño y posición en la pantalla. Hay numerosos geometry manager para Tk, pero en este trabajo va a utilizarse el más habitual, denominado packer. Para representar un widget en pantalla, primero debe ser incluido en una frame. Una frame es un widget que se encarga de contener otros widgets. Una vez creado un widget como hijo de una frame, estará creado pero no aparecerá en pantalla hasta que el packer lo coloque en su sitio.

Una aplicación basada e Tk tiene un control del flujo por eventos. Para poder ejecutar comandos como respuesta a estos eventos, existe el comando bind, el cual asocia a un evento un determinado comando, que se ejecutará en el preciso momento de producirse dicho evento. Los widgets de Tk tienen algunos de estos eventos asociados a determinados comandos definidos por defecto.

Un concepto importante es el foco; el widget que posea el foco será el que esté activo en ese momento. Tk proporciona comandos para cambiar el foco o pasarlo a otro widget.

La estructura básica de una aplicación Tk empieza creando los widgets, situándolos con el geometry manager y asociando los bind para el control de los eventos.

Todos los programas de Tk son llamados desde la consola, mediante el comando source, de la siguiente manera:

source c:/tcl/lib/prueba.tcl

Es importante recordar que el sentido de las barras que separan directorios es contrario al usado en Windows.


Hola Mundo en Tk

Siguiendo la tradición de todos los manuales de programación, el primer programa en Tk será algo relacionado con "Hola Mundo". En este caso se va a crear un boton, que al pulsarlo escriba "Hola Mundo!!!".

Ejemplo 10-1.
button .hola -text "Hola Mundo" -command {puts "Hola Mundo!!!"}

pack .hola -padx 20 -pady 10

En este ejemplo se crea un botón con el texto "Hola Mundo". El comando que jecutará al ser pulsado será escribir en la consola el texto "Hola Mundo !!!". Finalmente, se se sitúa dicho botón con el packer, dejando 20 pixels de separación en el eje horiontal entre el borde del botón y el borde de la ventana que lo contiene, y 10 en el vertical. El resultado es este:




Nombre de los Widgets Tk

En el ejemplo anterior, a continuación de la palabra button, que declara este widget como un botón, aparece .hola. Tk utiliza un sistema para nombrarlos que refleja su posición en la herencia de los mismos. La ventana principal o raíz se denomina ".". Esto es similar a los nombres de directorios utilizados por el sistema UNIX, donde "/" es el directorio principal o raíz, y a continuación, separados por barras "/", aparecen los subdirectorios o ficheros que dependen de este directorio raíz. De igual forma, cada widget es hijo de la ventana principal, y recibirá un nombre tal como ".hola". Si hubiera otro widget dentro de ".hola", llamado "otro", se denominaría ".hola.otro", y así sucesivamente.



Atributos de los Widgets

Cada widget tiene una serie de atributos de los que va a depender su apariencia o funcionalidad. El programador podrá elegir qué atributos se le aplican dentro de los posibles para un determinado tipo de widget, y que valores se les aplica. Los nombres de los atributos empiezan con "-" seguido del nombre del atributo. Por ejemplo, para indicar qué texto aparecerá sobre un botón, se utilizará el atributo "-text"; para su ancho, "-width"; y para su alto "-height".

Estos atributos se declaran en el momento de crear el widget. Por ejemplo:

% button .hola -text "Hola" -width 50 -height 30

Pero también pueden modificarse o añadirse durante la ejecución del programa con el comando configure. Por ejemplo, si se desea cambiar el texto del botón anterior, será:

% .hola configure -text "Otro texto"

Puede cambiarse o añadirse más de un atributo a la vez.

También es posible averiguar durante la ejecución del programa estos atributos con el comando cget. Por ejemplo si se le interroga al botón anterior sobre su texto:

% .hola cget -text
Otro texto

A continuación se presentan dos tablas. Una contiene los comandos para la creación de widgets, que se corresponden con los nombres de los posibles widgets, mientras que la otra consiste en los comandos de manipulación de estos.

Tabla 10-1. Comandos de creación de widgets.

button

Crea un botón que ejecuta un comando.

checkbutton

Crea un botón de chequeo. Tiene dos posiciones, activado o desactivado.

radiobutton

Crea un botón de radio. Es similar al anterior, pero aparece formando un grupo, y sólo uno del grupo puede estar activado de cada vez.

menubutton

Crea un botón que presenta un menú. Serían los botones existentes en la barra de menú.

menu

Crea un menú.

canvas

Crea un canvas donde es posible dibujar.

label

Crea una etiqueta. Sólo es de lectura. No se puede escribir en ella.

entry

Crea una entrada de texto. Se utiliza para introducir datos.

message

Crea un cuadro de mensaje, sólo de lectura.

listbox

Crea una lista de texto.

text

Crea texto editable o no, de propósito general.

scrollbar

Crea las barras de scroll, tanto verticales como horizontales.

scale

Crea una escala que permite ajustar el valor de una variable con su desplazamiento.

frame

Crea un contenedor de widgets. Todos los widgets deben aparecer dentro de una frame

toplevel

Crea una ventana

Tabla 10-2. Comandos de manipulación de widgets.

after

Ejecuta un comando después de un cierto período de tiempo.

bell

Hace sonar un pitido.

bind

Asocia un comando Tcl con un evento del sistema.

bindtags

Crea clases bind y controla la herencia entre binds.

clipboard

Manipula el portapapeles.

destroy

Destruye un widget.

fileevent

Asocia un comando Tcl con un descriptor de fichero.

focus

Controla el foco de entrada.

grab

Fija el foco de entrada a un widget, quitándoselo a otro.

image

Crea y manipula imágenes.

lower

Da de baja una ventana.

option

Accede a la base de datos de los recursos.

pack

El packer geometry manager.

place

El place geometry manager.

raise

Da de alta una ventana.

selection

Manipula la selección.

send

Envía un comando Tcl a otro programa Tcl.

tk

Informa sobre el estado interno de Tk.

tkerror

Captura los errores.

tkwait

Detiene el programa en espera de un evento.

update

Actualiza la pantalla.

winfo

Informa acerca de las ventanas.

wm

Interactúa con el window manager.


Previous Page Next Page


© 1995-98, etsimo WWW team
Última modificación: 19 de Agosto de 1998 - 17:46:56