Embutindo imagens nos scripts Python para aplicações Tkinter

Arquivos gráficos geram uma dependência na aplicação cujo tratamento (de existência ou MD5) pode não valer a pena dependendo do tamanho da aplicação. O que fazer para evitar que o usuário exclua, renomeie, corrompa ou modifique um arquivo de imagem? Este artigo visa introduzir uma solução para este problema.

[ Hits: 26.048 ]

Por: Willie Lawrence em 26/12/2014


Organização de uma aplicação real e conclusão



"Sujar" o código com uma série de códigos malucos é uma péssima ideia. Uma boa ideia é encapsular todas as imagens num módulo único como "resource.py" cujo conteúdo poderia ser:

### RESOURCE.py ###
GREEN_CHECK = "iVBORw0KGgoAAAANSUhEUgAAADcAAAA3CAYAAACo29JGAAAABGdBTUEAAK/INwWK6QAAABl0RVh0U29\
mdHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJsSURBVHja7JrrbYMwEIAvqAu4I7Qj0BHMCGQEGAF\
GgBGaEcIIZYRkBVZgBArSIbmubTAPc0Y56X7EhITP9wYuXdfBWSWAE8sl/D4Vz0DT9Fo+kg7eTgIVIxj\
rte21GiB9h2MIFQtrFVrPa8uJ1gK0WIpw4DPcXbLWs9fraDFfs2XY60Phhl8ymG9wMYKFwlqOFlOKL25\
Z9JpJa1Gvtekk6nAM44sLaw1a6zl1MmW4DwQLJbBIFV8+wQ1AP0KaHzNihCnf296SY+JYBUYRjqPFRKk\
x1be2P0YJLtGARb6PPAm2UqDoOrye53Rg0RJXpAQXK8DGOtau/fHg4ORxl9ZamzpGFS5UJA/YEuwoOB3\
YrJaKMtzYUjFpPReHTF/h7ggI0jxW7vFngWOwcOtaRgEuk6bnMTNe9/xTF3AxDpuypFtmxiPgPhRFGjD\
Gqr13NXAQZ0wRZ7mLWAgUY/0QHx2qKrvZ3PcIXceZbhLnip2O8QJtO4cY/t/QGd2xcQUXSLMU08SN7ph\
NnO1Wz0xwDLWZuOBsRZy1ruJMhmtxRz8ndjZTxNDc7zh1R11CyScAiwnrqo7Xrt3RVApyQ3fO4e8NUlF\
0jzFzOEh0de464XqqNa5xxyc1uMbgSlyKK12yaY9yxzkdSmm4j5FIVmOW5x8OZ9r5BIG4BDrH8iTgBrl\
NWK8wWB2ow7WG7r3Q1LQGN4U83BIrkLDaXLjGYvYiYzWbee628fdIwdUze0Mv4eZc+O3ourYWznTxFRA\
TGzhTWUhh4rUJ6nAq6wyf36nF2lK4WnDNFDZ6jraXLHlVo0TIJxCXy+sd5xccPfkVYADDOZXimxZ6tAA\
AAABJRU5ErkJggg=="
LOGO = "..."
SPLASH_SCREEN = "..."

Uma outra ideia é utilizar um dicionário ou a persistência em Shelve :

IMAGENS = {
    "logo" ; "...",
}

Ou:

import shelve
resource = shelve.open("./resource")
resource["LOGO"] = "..." # escrevendo
LOGO = resource["LOGO"] # lendo
resource.close()

Além dessas técnicas é possível ainda carregar uma imagem direto da internet usando urllib . Com isso pode-se obter um nível desejado de segurança na consistência dos seus arquivos de imagem para que você tenha certeza que sua aplicação está rodando exatamente com os arquivos que você planejou.

Página anterior    

Páginas do artigo
   1. Quem é o Tkinter
   2. Criando uma aplicação básica
   3. Organização de uma aplicação real e conclusão
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Introdução ao clib (Command Line Book)

Python - Threads

Sockets em Python

Pydev - Preparando o Eclipse para o Python

Gerar senhas seguras com Python

  
Comentários
[1] Comentário enviado por fabio em 26/12/2014 - 14:54h

Artigo muito bem escrito! Me deu saudades agora do bom e velho Tcl/Tk. Programei muito com ele na década de 90... Putz, tô ficando velho!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts