El entry
El widget entry permite introducir datos mediante el teclado y suele ir acompañado de un widget label que indica al usuario cuál es el dato que debe introducir.
Existen dos formas por las que la aplicación podrá acceder a los datos que el usuario haya introducido en el entry. La primera consiste en asignar al entry una variable que tomará en cada momento el valor que existiera en el entry. Sería así:
entry .e1 -width 10 -textvariable dato pack .e1 -side top
Esta forma es muy simple, pero en el caso de que el usuario abandone el cuadro de diálogo sin aceptar los cambios, la variable permanecería con el valor incorrecto, por lo que habría que escribir código para evitar esto.
La segunda manera es algo más complicada pero más recomendable, ya que evita el problema anteriormente citado:
entry .e1 -width 10 pack .e1 -side top . . proc Aceptar { } { set dato [.e1 get] # aqui iria el resto del procedimientos. }
En este caso no se ha asignado ninguna variable al entry; así que lo que teclee el usuario no es automáticamente almacenado como ocurría en el caso anterior. Sólo en el caso de abandonar la ventana o el cuadro de diálogo pulsando el botón de "Aceptar" (que llamaría al procedimiento Aceptar) haría que se capturase el dato existente en el entry y se almacenase en una variable. En caso de abandonar la ventana por otros medios, el dato del entry se perderá, tal y como debe ser.
Los atributos más habituales de los entry son los que a continuación se presentan:
|
background |
Color del fondo. Puede acortarse a bg. |
|
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. |
|
highlightcolor |
Color cuando tiene el foco. |
|
highlightthickness |
Color del rectángulo que indica que tiene el foco. |
|
insertofftime |
Tiempo, en milisegundos, que durante el parpadeo del cursor, este no es visible. |
|
insertontime |
Tiempo, en milisegundos, que durante el parpadeo del cursor, este es visible. |
|
justify |
Justificación del texto: left, right o center. |
|
relief |
Relieve: flat, sunken, raised, groove o ridge. |
|
show |
Si es false, se mostrarán asteriscos en lugar de los caracteres tecleados. |
|
state |
disabled(sólo lectura) o normal (editable). |
|
textvariable |
Variable donde se almacenará le valor introducido. |
|
width |
Ancho en caracteres. |
|
xscrollcommand |
Utilizado para conectarlo con una barra de scroll. |
Existen una serie de operaciones que pueden ser efectuadas con los entry, como insertar texto, borrarlo y desplazarlo con una barra de scroll. Estas operaciones necesitan el nombre de cada carácter, definido por su índice. El índice comienza en 0 para el primer carácter, y termina en end. En la siguiente tabla pueden verse los formatos de índices posibles.
|
0 |
Indice del primer carácter. |
|
end |
Indice del último carácter. |
|
number |
Indice de un carácter, contando desde cero. |
|
insert |
El carácter a la derecha del cursor. |
|
xcoord |
El carácter bajo la coordenada x especificada. |
La siguiente tabla, donde $w representa un entry, presenta alguna de las operaciones posibles con entrys.
|
$w cget opcion |
Devuelve el valor de configuración de opcion. |
|
$w configure ... |
Modifica la configuración del entry. |
|
$w delete inicio? fin? |
Borra los caracteres desde inicio ahasta fin. |
|
$w get |
Captura el valor existente en el entry. |
|
$w index indice |
Devuelve el índice numérico de indice. |
|
$w insert indice cadena |
Inserta una cadena en el entry. |
|
$w xview indice |
Mueve el entry hasta el carácter en indice. |
|
$w xview moveto fraccion |
Mueve el texto del entry el valor dado en fraccion. |
Hasta aquí se ha creado la ventana de diálogo. Es importante ver cómo se realiza la inicialización de los entrys a un cierto valor
al ser llamada la ventana, y cómo se ha creado un label inferior que responde a los eventos del ratón <Motion> y <Leave>
para escribir en este label una pequeña ayuda. A continuación se escribe parte del procedimiento que es llamado al pulsar sobre
el botón de Aceptar y que captura los datos de los entrys.
El resultado es el siguiente: