Erzeugung eines Fensters
Programm zur Erzeugung eines Fensters
Das folgende Programm erzeugt bereits ein funktionsfähiges Anwendungsfenster.
from tkinter import *
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Test')
# Aktivierung des Fensters
tkFenster.mainloop()
Wenn man das Programm ausführt, dann ergibt sich dieses Anwendungsfenster:
Es macht eigentlich nichts weiter, als sich wie ein Fenster zu verhalten. Man kann es z. B. vergrößern oder auch schließen.
Fenster als GUI-Objekt
Mit der Anweisung from tkinter import *
werden alle Namen des Moduls tkinter
importiert.
Die Anweisung tkFenster = Tk()
erzeugt ein Objekt der Klasse Tk
und bindet
es an den Namen tkFenster
.
Mit der Anweisung tkFenster.title('Test')
wird der im Fenster angezeigte Titel festgelegt.
Mit der Anweisung tkFenster.mainloop()
wird schließlich die Ereignisschleife aktiviert.
Abspeichern von GUI-Programmen
Python-Programme mit einer grafischen Benutzeroberfläche kann man wie alle Python-Programme
mit der Dateinamenserweiterung .py
abspeichern.
Wenn man Python-Programme unter Windows ausführt, dann ist es günstiger,
die Dateinamenserweiterung .pyw
zu benutzen.
Python-Programme mit den Dateinamenserweiterungen .py
und .pyw
verhalten sich unter Windows unterschiedlich, wenn sie mit einem Doppelklick gestartet werden.
Bei der .py
-Version wird der Python-Interpreter python.exe
,
bei der .pyw
-Version der Python-Interpreter pythonw.exe
aufgerufen.
Während der Python-Interpreter python.exe
zunächst ein Konsole-Fenster öffnet
und anschließend erst das GUI-Fenster erzeugt, startet der Python-Interpreter pythonw.exe
nur das GUI-Fenster. Da man nur an diesem GUI-Fenster interessiert ist, sollte man (unter Windows) die
.pyw
-Version benutzen.
Ausführen von GUI-Programmen unter IDLE
Die Python-Entwicklungsumgebung IDLE ist selbst ein Python-Programm, dessen grafische Benutzeroberfläche
mit tkinter
erzeugt wird. Wenn man IDLE startet, dann wird die für IDLE zuständige
mainloop()
-Methode ausgeführt.
Auch wenn in IDLE bei der Programmausführung auch ohne die mainloop()
-Methode das Fenster dargestellt wird, sollte man nicht darauf verzichten - spätestens bei der direkten Ausführung des selbst erstellten Programms (unter Windows z.B. Doppelklick auf die .pyw
-Version) gibt es Probleme, weil kein Fenster geöffnet wird.
Schwierigkeiten können auftreten,
wenn man ein selbst geschriebenes GUI-Programm, das seinerseits die mainloop()
-Methode
aufruft,
von IDLE aus startet.
Es laufen dann zwei Ereignisschleifen gleichzeitig und können so zu unbeabsichtigten Effekten
führen.
Es ist daher ratsam, GUI-Programme durch einen Doppelklick auf den entsprechenden Dateinamen zu starten, oder sie direkt mit dem zugehörigen Interpreter aufzurufen.
Aufgabe 1
(a) Teste das oben gezeigte Programm.
Speichere es hierzu geeignet ab (z.B. unter dem Dateinamen gui_fenster.pyw
) und führe
es in der oben beschriebenen Weise aus.
(b) Ergänze das Programm wie folgt. Welche Wirkung hat die geometry
-Methode?
from tkinter import *
# Erzeugung des Fensters
tkFenster = Tk()
tkFenster.title('Test')
tkFenster.geometry('350x145')
# Aktivierung des Fensters
tkFenster.mainloop()
Hinweis
Bei einer sehr hohen Montior-Auflösung (wie z.B. 3840x2160) kann es zu leicht abweichenden Darstellung der Fenster kommen. Eine mögliche Lösung: Monitor-Auflösung heruntersetzen oder die Pixel-Werte in den Aufgaben verdoppeln.