Tomás Domínguez Mínguez

Desarrollo de interfaces gráficas en Python 3 con Tkinter


Скачать книгу

de la ventana:

illustration

      Ahora cambie dicha sentencia por:

illustration

      El resultado obtenido sería el mostrado a continuación:

illustration

      Realice un último cambio, sustituyendo la sentencia anterior por:

illustration

      En esta ocasión, el texto se vería en la esquina inferior derecha:

illustration

      En ambos casos, aunque cambie el tamaño de la ventana, la posición del texto seguirá siendo la misma.

      El relieve determina el efecto 3D mostrado por un widget. Para aplicarlo, se utiliza el atributo relief, cuyos valores pueden ser: FLAT, RAISED, SUNKEN (por defecto), GROOVE y RIDGE. Es importante que el widget tenga un borde con cierta anchura (opción bd); si fuera muy estrecho, el efecto apenas sería perceptible.

illustration

      Recuerde que, para hacer uso de cualquier constante, antes deberá importarla. También podrá usar directamente sus valores; por ejemplo, la constante FLAT tiene el valor “flat”, el de RAISED es “raised”, etc.

      Para demostrar el efecto que tiene este atributo, se utilizará el siguiente programa:

illustration

      En primer lugar, se importan las clases del paquete Tkinter que se van a utilizar; en concreto, Tk para crear la ventana principal y Label y Entry para mostrar el típico campo de entrada de datos de un formulario, precedido por una etiqueta que indica la información que se debe introducir:

illustration

      Una vez creada la ventana principal, se evita que pueda ser redimensionada:

illustration

      A la etiqueta se la asigna el texto genérico “Campo:”. El campo de texto se crea con un efecto SUNKEN (es el predeterminado, por lo que realmente no habría sido necesario incluir esta opción) y un borde de cinco píxeles de grosor:

illustration

      Las últimas sentencias sitúan la etiqueta a la izquierda del campo, con la separación indicada en las opciones padx y pady:

illustration

      El resultado de su ejecución es el siguiente:

illustration

      Ahora, cambie el valor del atributo relief por FLAT, RAISED, GROOVE o RIDGE, y ejecute de nuevo el programa cada vez que lo haga. El resultado será el mostrado en las siguientes imágenes. Se ha añadido un título a la ventana indicando el valor asignado a dicho atributo:

illustration

      En Tkinter, las imágenes se pueden representar mediante dos clases:

      •BitmapImage. Contiene imágenes de dos colores en formato xbm.

      •PhotoImage. Contiene imágenes a todo color en formato gif, pgm o ppm.

      El constructor de ambas clases tiene como argumento el nombre del archivo que contiene la imagen:

      BitmapImage (archivo)

      PhotoImage (archivo)

      Para asociar una imagen a un widget, se pueden utilizar los siguientes atributos:

      •bitmap. Solo admite objetos de la clase BitmapImage.

      •image. En este caso, su valor podrá ser un objeto de la clase BitmapImage o PhotoImage.

      Normalmente, los píxeles del primer plano de un bitmap se muestran negros y los del fondo se muestran transparentes. Para asignarles otros colores, use las opciones foreground y background.

      Tkinter dispone de una serie de bitmaps prediseñados que puede utilizar para expresar advertencias, errores, preguntas, etc. Se muestran a continuación.

illustration

      Sus nombres son, de izquierda a derecha: "error", "gray75", "gray50", "gray25", "gray12", "hourglass", "info", "questhead", "question" y "warning". También podría crear sus propios bitmaps con archivos en formato xbm.

illustration

      Para mostrar una imagen, además de utilizar objetos de la clase BitmapImage o PhotoImage, también puede hacer uso de ImageTk, que pertenece a la librería PIL (Python Imaging Library), y que soporta una amplia variedad de formatos de imágenes.

      Relacionado con los atributos bitmap e image, se encuentra el atributo compound, que se utiliza cuando la imagen aparece junto a un texto (por ejemplo, en una etiqueta o un botón), indicando su posición respecto de este. Sus valores son: NONE, TOP, BOTTOM, LEFT, RIGHT y CENTER, dependiendo de si quiere que la imagen no aparezca o aparezca encima, debajo, a la izquierda, a la derecha o centrada con el texto, respectivamente.

      El siguiente código permite practicar con algunos de los últimos atributos descritos:

illustration

      En este nuevo programa, tras importar las clases Tk y Label del paquete Tkinter, se crea una ventana a la que se le asigna un tamaño de 200 × 100 píxeles con el método geometry():

illustration

      A continuación, se crea la etiqueta, en cuyo constructor se establecen los valores de diversos atributos. En primer lugar, se le da un aspecto 3D con la opción relief. Luego, se le añade un texto y un icono con las opciones text y bitmap. Además, para que la imagen quede a la izquierda, se utiliza el atributo compound:

illustration

      Por último, la etiqueta se muestra centrada horizontal y verticalmente en la ventana con el método place(), utilizando los atributos y valores que ya conoce de una práctica anterior:

illustration

      Ejecute el programa y observe el resultado. Tal como se aprecia, ahora la etiqueta tiene un borde que da la sensación 3D pretendida, dentro de la que se muestra tanto el texto como el bitmap del reloj a su izquierda:

illustration