i

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:

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.

Suche

v
9.1.4.1
www.inf-schule.de/software/gui/entwicklung_tkinter/fenster
www.inf-schule.de/9.1.4.1
www.inf-schule.de/@/page/ySiNkzCrZAmvszbI

Rückmeldung geben