Kapitel 17
Grafik
504
17.2.1 Eine Pixelgrafik erzeugen
Abb. 17.5: Zwei Labels mit PhotoImage-Objekt
Das folgendes Skript demonstriert, wie Sie eine einfache Pixelgrafik erstellen und in einer
Applikation darstellen können. Abbildung 17.5 zeigt das Applikationsfenster, das das Skript
auf den Bildschirm bringt. In Zeile
#1 wird ein »leeres« PhotoImage-Objekt erzeugt.
Anschließend werden zwei anonyme Label-Widgets generiert und in das Fenster gepackt.
Über die
image-Option wird auf beiden Labels das PhotoImage-Objekt dargestellt. Nun wird
ab Zeile
#3 das Bild verändert. Mit der Methode put() werden zwei rote Rechtecke auf das
Bild gezeichnet, die zusammen ein rotes Kreuz ergeben. Dabei wird im ersten Argument
der RGB-Wert der Farbe Rot übergeben. Die ersten beiden Hexadezimalziffern (
ff) tragen
den maximalen Wert (dezimal
255) und die anderen vier Hexadezimalziffern jeweils 00.
Das zweite Argument ist ein Tupel aus vier Zahlen. Die ersten beiden Zahlen bezeichnen
die Koordinaten der linken oberen Ecke eines Rechtecks und die letzten beiden Zahlen die
Koordinaten der rechten unteren Ecke. Der Ursprung
(0, 0) des Koordinatensystems des
PhotoImage-Objektes ist wie üblich links oben.
Beachten Sie, dass in dem Programm die Änderung des
PhotoImage-Objektes erst erfolgt,
nachdem es bereits an zwei Label-Widgets gekoppelt worden ist. Alle Änderungen eines
PhotoImage-Objektes zur Laufzeit des Programms werden automatisch in allen Widgets
wiedergegeben, die das Bild verwenden.
write(pfad, [format])
Speichert das Bild unter dem Dateinamen pfad im Format
format ab. Erlaubte Formate sind GIF und PGM/PPM. Fehlt
das Argument
format, sucht das System selbst ein geeignetes
Format; in der Regel ist das PPM.
# kreuze.pyw
from tkinter import *
class Bild:
def __init__ (self):
self.fenster = Tk()
self.bild = PhotoImage(width=50, height=50) #1
Label(master=self.fenster, image=self.bild).pack() #2
Label(master=self.fenster, image=self.bild).pack()
self.bild.put("#ff0000", (20,10, 30, 40)) #3
Methode Erklärung
Tabelle 17.5: Die wichtigsten Methoden der Klasse PhotoImage (Forts.)
505
17.2
Die Klasse PhotoImage
Es gibt viele Anwendungsbereiche, in denen Bilder Pixelr Pixel berechnet werden. Zum
Beispiel kann man ortsbezogene Messdaten (Luftdruck, Temperatur, Waldschäden) durch
Farben codieren und in einer Karte darstellen. Abbildung 17.6 zeigt eine Anwendung aus
der Mathematik, eine Visualisierung der Mandelbrotmenge (benannt nach ihrem Entdecker
Benoit Mandelbrot). Sie ist unter der Bezeichnung »Apfelmännchen« populär geworden.
Abb. 17.6: Visualisierung der Mandelbrotmenge
Die Mandelbrotmenge ist definiert als die Menge aller komplexen Konstanten c, für die die
folgende komplexe Zahlenfolge beschränkt ist:
z
0
= 0
z
n+1
= z
n
2
+ c
Die blauen Punkte repräsentieren Elemente der Mandelbrotmenge. Die Koordinaten x, y
eines Punktes werden als Real- und Imaginärteil einer komplexen Zahl z=x +j*y interpre-
tiert.
Abbildung 17.6 wird durch das folgende Skript erzeugt.
Skript:
self.bild.put("#ff0000", (10,20, 40, 30)) self.fenster.mainloop()
b = Bild()
# mandelbrot.pyw
from tkinter import *
RADIUS = 2.0
ZOOM = 50.0
class Mandelbrot:
def __init__(self):
self.fenster = Tk()
self.bild = PhotoImage(width=200, height=200) #1
self.bildflaeche = Label(master=self.fenster,
image=self.bild)
self.bildflaeche.pack()

Get Python 3 - Lernen und professionell anwenden now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.