Úvod do Tkinter - Okna pro jazyk Python - Postavené na základech 'An Introduction to Tkinter'
Třída PhotoImage se používá na zobrazování obrázků a fotek (černobílých i barevných) na štítcích, tlačítkách, plátnech i textových udělátcích.
Kdykoliv potřebujte zobrazit ikonu nebo obrázek v Tkinter.
photo = PhotoImage(file="image.gif")
photo = PhotoImage(file="lenna.pgm")
Třída PhotoImage umí číst base64-kódované gif obrázky z řetězců. Této vlastnosti se dá využít k zabudování obrázků přímo do pythonovského kódu (použijte funkce z modulu base64 na konverzi binárních dat do base64-zakódovaného řetězce):
photo = """ R0lGODdhEAAQAIcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh ... AfjHtq1bAP/i/gPwry4AAP/yAtj77x+Af4ABAwDwrzAAAP8SA/j3DwCAfwAA/JsM4J/lfwD+/QMA 4B8AAP9Ci/4HoLTpfwD+qV4NoHVAADs= """ photo = PhotoImage(data=photo)
Pokud potřebujte pracovat s dalšími grafickými formáty, použijte Python Imaging Library (PIL), která umožňuje načítat až 30 formátů a převádět je Tkinterovský formát:
from PIL import Image, ImageTk image = Image.open("lenna.jpg") photo = ImageTk.PhotoImage(image)
PhotoImage formát z PIL můžete použít všude, kde Tkinter očekává obrázek. Příklad::
label = Label(image=photo) label.pack()
Poznámka 2: Protože instance PhotoImage se mohou dostat do rukou popeláři (garbage collector), například když se vracíte z funkce, kde byl obrázek uložen v lokální proměnné, může se obrázek vymazat, přestože je zobrazen některým tkinter udělátkem.
Pokud se tohoto nepříjemného chování chceme zbavit, musíme držet zvláštní referenci na obrázek. Snadná cesta, jak toho docílit, je přiřadit obrázek do atributu udělátka:
label = Label(image=photo) label.image = photo # podrž si referenci label.pack()
Přeložil a upravil - Pavel Kosina - Copyright © 2006 TkinterCZ - GNU Free Documentation License 1.2