Читать книгу Desarrollo de interfaces gráficas en Python 3 con Tkinter - Tomás Domínguez Mínguez - Страница 20

4.7 IMÁGENES

Оглавление

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.


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.


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:


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():


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:


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:


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:



Para resaltar el efecto de relieve en 3D, amplíe el grosor del borde de la etiqueta con la opción bd.

Desarrollo de interfaces gráficas en Python 3 con Tkinter

Подняться наверх