E
ste capítulo describe los widgets más simples que se pueden encontrar en Tk: la frame, la toplevel, el label, el entry, el scale y la barra de scroll. Todos estos widgets se caracterizan por poder ser utilizados con unas mínimas líneas de código.Frames y Toplevel
Las frames ya han sido vistas en los ejemplos de los anteriores capítulos. Esto es así porque además de ser el widget más simple, es imprescindible para la correcta colocación del resto de los widgets en la ventana. Básicamente, una frame es un widget contenedor; es decir, va a ser utilizada principalmente para contener o agrupar en una determinada posición de la ventana otros widgets. No hay mucho más sobre las frames, exceptuando que se les puede modificar su relieve, color y borde.
Las toplevel son un widget similar a las frames, básicamente es una ventana independiente, con su correspondiente título y sus botones para maximizarla y minimizarla. Una toplevel tiene los mismos atributos que una frame.
Todo el manejo de las toplevels se realiza medinate el comando wm:
toplevel frame
En este ejemplo, se ha dado un valor al atributo -ipadx y -ipady. porque al estar la frame vacía, esta no sería visible; es decir, la frame se adapta al tamaño de lo que tenga en su interior.Pero dando valor a estos atributos se obliga a la frame a tener un espacio vacío en su interior, con lo que ya se hace visible. Todo esto no es necesario si la frame contiene algún widget.
Algunos de los posibles atributos que pueden tomar tanto las frames como las toplevel se presentan en la siguiente tabla:
|
background |
Color del fondo. Puede acortarse a bg. |
|
borderwidth |
Ancho del borde. |
|
cursor |
Cursor que se muestra cuando el ratón entra en la ventana. |
|
height |
Alto de la ventana. |
|
highlightcolor |
Color cunado tiene el foco. |
|
highlightthickness |
Color del rectángulo que indica que tiene el foco. |
|
relief |
Relieve: flat, sunken, raised, groove o ridge. |
|
width |
Ancho de la ventana. |
El label
El widget label permite presentar en pantalla un texto sólo de lectura. Este texto puede ser definido como una constante en el momento de crear el widget. Esto se hará mediante el atributo text:
label .lb1 -text "Esto es un label"
o pude ser definido durante la ejecución del programa por una variable, cuyos sucesivos valores van apareciendo en el label. En este caso el atributo a utilizar será textvariable:
set texto "Esto es un label" label .lb1 -textvariable texto
La apariencia del label puede cambiar de forma dinámica por la utilización del comando configure.Una característica importante de los label es que no sólo pueden mostrar texto sino también imágenes. Esto se verá con más detalle en el capítulo titulado Bitmaps e Imágenes..
|
background |
Color del fondo. Puede acortarse a bg. |
|
bitmap |
Nombre del bitmap a mostrar. |
|
borderwidth |
Ancho del borde. |
|
cursor |
Cursor que se muestra cundo el ratón entra en la ventana. |
|
font |
Fuente del texto. |
|
foreground |
Color del texto. También fg. |
|
height |
Alto de la ventana. |
|
highlightcolor |
Color cuando tiene el foco. |
|
highlightthickness |
Color del rectángulo que indica que tiene el foco. |
|
image |
Imagen a ser mostrada. |
|
justify |
Justificación del texto: left, right o center. |
|
relief |
Relieve: flat, sunken, raised, groove o ridge. |
|
text |
Texto fijo a mostrar. |
|
textvariable |
Nombre de la variable cuyo valor va a ser mostrado. |
|
underline |
Carácter a ser mostrado con una línea bajo él. |
|
width |
Longitud del label en caracteres. |
La scale
El widget scale representa un deslizador dentro de un surco por el que se desplaza. El surco representa el rango de valores numéricos, y la posición del deslizador representa el valor en cada momento. La scale puede tener un label asociado y puede representar el valor junto al deslizador.
El valor de la scale puede ser manejado de tres formas diferentes. Se pueden utilizar los comandos set y get para capturar el valor de la scale o para darle un valor. Se puede asociar a la scale una variable que tomará en cada momento el valor de la scale y cualquier cambio en la variable afecta a la scale. El tercer método consiste en asociarle un comando de forma que se ejecute al mover la scale y esta le pasará su valor como otro argumento más.
La opción del label puede ser utilizada para indicar entre qué valores se va a despalzar la escala, si se escribe algo así:
-label "0 100"
Como puede verse, no es necesario que se le pase explícitamente el valor de la variable de la scale al procedimiento. Es decit, se ha escrito:
-command Escala
y no:
-command "Escala $valor"
En la siguiente tabla se presentan los atributos más habituales en las scale.
|
activebackground |
Color del fondo cuando el ratón está sobre la escala. |
|
background |
Color del fondo. También bg. |
|
borderwidth |
Ancho del borde. |
|
command |
Comando a ejecutar cuando se mueve el deslizador. |
|
cursor |
Cursor que se muestra cuando el ratón entra en la ventana. |
|
digits |
Número de dígitos significativos en el valor de la escala. |
|
from |
Mínimo valor que puede tomar la escala. |
|
font |
Fuente del texto. |
|
foreground |
Color del texto. También fg. |
|
highlightcolor |
Color cuando tiene el foco. |
|
highlightthickness |
Color del rectángulo que indica que tiene el foco. |
|
label |
Una cadena que se mostrará sobre la escala. |
|
length |
La longitud de la escala en unidades de pantalla. |
|
relief |
Relieve: flat, sunken, raised, groove o ridge. |
|
resolution |
El valor es redondeado a un múltiplo de este valor. |
|
showvalue |
Si es true, el valor se mostrará próximo a la escala. |
|
sliderlength |
La longitud del deslizador en unidades de pantalla. |
|
state |
normal , active o disabled. |
|
to |
Máximo valor que puede tomar la escala. |
|
variable |
Nombre de la variable asociada a la escala. Los cambios en la variable se reflejan en la escala, y los cambios en la escala se reflejan en la variable. |
|
width |
Ancho de la escala. |
En la siguiente tabla se pueden ver algunas de las operaciones más comunes con escalas; en ella, $w representa el nombre de la escala.
|
$w cget opcion |
Devuelve el valor de configuración de opcion. |
|
$w configure ... |
Modifica la configuración de la scale. |
|
$w coords ?valor? |
Devuelve las coordenadas del punto donde este el deslizador. |
|
$w get ?x y? |
Captura el valor existente en la scale, o el valor correspondiente a las coordenadas x e y. |
|
$w identify x y |
Devuelve trough1, slider o trought2 para indicar qué hay en la posición (x,y). |
|
$w set valor |
Coloca el valor en la escala. |
La scrollbar
La scrollbar (barra de scroll) es utilizada para controlar la presentación de otros widgets que se verán más adelante. Estos widgets, diseñados para trabajar con barras de scroll, son el entry, la listbox, el text y el canvas. Existe un protocolo simple entre estos widgets y las barras de scroll, pero no es necesario conocer estos detalles para utilizar dichas barras.
Una barra de scroll está formada por 5 componentes: arrow1, trough1, slider, trough2 y arrow2. Los arrows están al principio y al fin de cada barra de scroll, siendo arrow1 la flecha del lado izquierdo en las barras horizontales y la de la parte superior para las barras de scroll verticales. El slider representa la posición relativa de la información mostrada en el widget asociada a las barras de scroll, y el tamaño del slider representa la cantidad relativa de información mostrada. Los dos trough son las regiones por las que se desplazan los sliders.
El protocolo entre las barras de scroll y el widget (o widgets) asociado a ellas comienza cuando se define en la barra de scroll el comando a ejecutar en caso de desplazarse las barras. Esto se hace mediante el atributo -command de la siguiente manera:
scrollbar .scroll -command {.text yview} -orient vertical
En este caso se asocia una barra de scroll vertical a un widget llamado .text, que debe ser un widget de los anteriormente citados para que pueda ser asociado a una barra de scroll. De esta forma, cada vez que se desplace el slider a lo largo de la barra de scroll correspondiente, se ejecutará el comando, el cual efectuará la operacion yview (o xview si es barra horizontal) que desplazará la información presentada en el widget la cantidad deseada.
La otra parte del protocolo está en el widget asociado, al que debe de informarse de que está conectado a una barra de scroll mediante el atributo -yscrollcommand (o xscrollcommand); la ejecución de este comando actualizará la información que presenta el widget.
text .text -yscrollcomand {.scroll set}
Si ahora se escribe algo en el widget texto:
Como curiosidad puede comprobarse que en el ejemplo anterior no se utilizó un pack para colocar las barras de scroll sino un grid. Esto es así porque de utilizar el método de la anterior versión (pack) la flecha derecha de la barra de scroll horizontal solaparía a la flecha inferior de la barra de scroll vertical; o al revés, dependiendo de cuál de las dos hiciese el pack en último lugar. La solución encontrada para que no se solapasen fue hacer un grid de la forma que puede verse en el ejemplo.
En la siguiente tabla pueden verse algunos de los atributos más comunes en las barras de scroll:
|
activebackground |
Color del slider y arrows cuando el ratón está sobre ellos. |
|
activerelief |
Relieve del slider y arrows cuando el ratón está sobre ellos. |
|
background |
Color del fondo. También bg. |
|
borderwidth |
Ancho del borde. |
|
command |
Comando a ejecutar al moverse la barra de scroll. |
|
cursor |
Cursor que se muestra cuando el ratón está sobre la barra. |
|
highlightcolor |
Color cuando tiene el foco. |
|
highlightthickness |
Color del rectángulo que indica que tiene el foco. |
|
jump |
Si es true, no se mueve dinámicamente, sino que salta a la posición requerida. |
|
orient |
horizontal o vertical. |
|
troughtcolor |
Color del surco donde están los sliders. |
|
width |
Ancho de la scrollbar. |
En la siguiente tabla se presentan las operaciones más comunes con las barras de scroll.
|
$w activate ?elemento? |
Activa el elemento arrow1, arrow2 o slider. |
|
$w cget opcion |
Devuelve el valor de configuración de opcion. |
|
$w configure ... |
Modifica la configuración de la scale. |
|
$w fraction x y |
Devuelve un número entre 0 y 1 que indica la posición relativa del slider en el trough. |
|
$w get |
Captura el valor existente en la scale, o el valor correspondiente a las coordenadas x e y. |
|
$w identify x y |
Devuelve trough1, arrow1, arrow2 slider o trought2 para indicar que hay en la posición (x,y). |
|
$w set primero ultimo |
Coloca los parámetros. primero es la posición relativa de la parte superior (izquierda) de la ventana. ultimo es la posición relativa de la parte inferior (derecha) de la ventana. Ver dibujo. |
El comando bell
El comando bell hace sonar un pitido en el ordenador. El único punto interesante de este comando es que está asociado con una ventana, de modo que si se está ejecutando una aplicación en una máquina remota, el pitido es escuchado por el usuario. La sintaxis es:
bell ?-displayof window?