PhotoImage
Você pode usar a classe PhotoImage sempre que você precisar exibir um ícone ou uma imagem em um aplicativo Tkinter. A classe PhotoImage é usada para exibir imagens (ou em tons de cinza ou imagens de cor real) em etiquetas, botões, telas e widgets de texto. Se você precisa trabalhar com outros formatos de arquivo, o Python Imaging Library (PIL) contém classes que permite carregar imagens em mais de 30 formatos e convertê-los em objetos de imagem compatíveis com Tkinter.
O PhotoImage também pode ler arquivos GIF base64-codificado em Strings. Você pode usar isso para incorporar imagens no código fonte Python.
Como Instalar o PIL – Ubuntu 64
Para Instalar o Python Imaging Library (PIL) digite os seguintes comandos no terminal do Linux:
sudo apt-get build-dep python-imaging sudo apt-get install libjpeg62 libjpeg62-dev sudo ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib/libz.so sudo ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib/libjpeg.so sudo ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib/libfreetype.so sudo apt-get install python-pip sudo pip install PIL sudo apt-get install python-imaging-tk
Exemplo:
Neste exemplo carregamos uma imagem cujo sua fonte é uma Url da internet e a exibimos em um componente de imagem.
Python
#!/usr/bin/env python # -*- coding: latin-1 -*- # Desenvolvimento Aberto # PhotoImage.py # importa modulo from Tkinter import * from PIL import Image, ImageTk # importa url e IO import urllib2 as urllib import cStringIO # Cria formulario formulario = Tk() formulario.title = "Desenvolvimento Aberto" # Cria componentes rotulo = Label(formulario, text = "Imagem - Python Imaging Library") # Cria Url url = urllib.urlopen("https://desenvolvimentoaberto.files.wordpress.com/2014/04/images.jpg") # Lê imagem da url figura = cStringIO.StringIO(url.read()) # carrega a imagem imagem = Image.open(figura) # joga a imagem para o componente foto = ImageTk.PhotoImage(imagem) # Exibi a imagem pic = Label(formulario, image = foto) # Posiciona componentes rotulo.pack(padx=20) pic.pack(padx=20, pady=10) # Loop do tcl mainloop()