sábado, 23 de noviembre de 2013

Un control Label normalmente nos permite mostrar un texto en una ventana, el texto es estático y no se puede modificar, pero otra de las cosas que podemos hacer con un Label es utilizarlo para mostrar una imagen.

En el ejemplo anterior vimos como crear una ventana y agregar un label, lo que haremos ahora será utilizar ese label para mostrar una determinada imagen, si necesitas saber como se crea la ventana mira el ejemplo anterior: Python GUI ventanas.

from tkinter import Label
widget = Label(None, text='Hola GUI tkinter')
widget.pack()
widget.mainloop() 


Mostrar Imagen en Label


El código que mostramos es del ejemplo anterior, de como mostrar una ventana, agregaremos un objeto de la clase PhotoImage o BitmapImage para cargar una imagen de nuestro ordenador, luego esa imagen la podemos mostrar en controles como el label, button, entre otros.

Para abrir una imagen con PhotoImage hay que pasarle el nombre de la imagen al atributo file, si la imagen no se encuentra en el mismo directorio del archivo .py debemos indicar la ruta completa, esta clase admite el formato GIF y PPM/PGM.

from tkinter import *
ventana = Tk()
img = PhotoImage(file="tutor de programacion.gif")
widget = Label(ventana, image=img).pack()
ventana.mainloop() 

1. Imagen en label
No solo podemos agregarle imágenes a los label sino también a los botones, para tener botones mas vistosos, o los menús.

También existen otras formas de mostrar imágenes como por ejemplo usando un canvas, aprenderemos a hacerlo mas adelante, o utilizando librerías de procesamiento de imágenes como PIL.

Mostrar Imagen en Canvas


Para finalizar les dejo un ejemplo sencillo y practico de como agregar una imagen a una ventana utilizando un elemento canvas.

from tkinter import *
win = Tk()
img = PhotoImage(file="tutor de programacion.gif")
can = Canvas(win)
can.pack(fill=BOTH)
can.create_image(20, 20, image=img, anchor=NW)
win.mainloop()

nota: La imagen debe estar en formato gif y en el mismo directorio del código fuente para que este ejemplo funcione correctamente, para usar otra imagen solo cambiar el atributo file de la clase PhotoImage con el nombre de la nueva imagen.

La clase BitmapImage funciona del mismo modo solo que admite archivos de tipo .xbm.

Descarga Python GUI Images

Siguiente: Botones

Ver Categoria:

6 comentarios :

  1. Hola para poder ejecutar esto, debo destacar que funciona para archivos .gif y ( from tkinter import * ) el comando interno de python es "Tkinter" con T mayúscula. gracias

    ResponderEliminar
    Respuestas
    1. Para esta serie de tutoriales tkinter me he enfocado en la versión 3 de python, por lo que si alguien desea ejecutar el código en python 2 deberá hacer ciertas modificaciones, por ejemplo el cambio en la " T " que mencionas.

      Eliminar
  2. hola nececito hayuda con el siguiente error:

    ***************************************************************************************
    File "C:\Python34\lib\tkinter\__init__.py", line 3335, in __init__
    self.tk.call(('image', 'create', imgtype, name,) + options)
    _tkinter.TclError: couldn't recognize data in image file "jack.gif"
    ***************************************************************************************

    el codigo es el siguiente:
    ------------------------------------------------------------------------------------------------------
    from tkinter import *
    import f23

    def escribe():
    lista.insert(END,"hola")

    def lista():
    agenda = open ("agendatelefonica.csv")
    numero = 0
    for i in range(1,6):
    lectura = agenda.readline()
    ## print (lectura.replace(",","-"))
    lista.insert(END,lectura.replace(",","-"))
    numero = numero + 1
    agenda.close()


    f = Frame(height=300,width=300)
    f.pack(padx=20,pady=20)


    logoimg = PhotoImage(file="jack.gif")
    etiquetalogo = Label(f,image = logoimg)
    etiquetalogo.pack(side=TOP,padx=10,pady=10)
    ----------------------------------------------------------------------------------------------------------

    GRASIAS anticipadas....
    Saludos :-)

    ResponderEliminar
  3. la imagen esta en las misma carpeta que el archivo del codigo, ademas he probado con otras imagenes y formatos distintos.. y nada de nada.... :-(

    ResponderEliminar
    Respuestas
    1. Puede ser que el formato de la imagen imagen no sea correcto aunque su extensión sea .gif, probé el código con la imagen que viene en los ejemplos en el enlace de descarga que esta al final del post y funciona correctamente, la única modificación que hice fue comentar import f23.

      Eliminar
  4. Alguien me puede decir como hacer para que no se sobrescriba un label es decir como limpiarlo antes de un próximo resultado gracias

    ResponderEliminar