Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:tkinter:tkintereinstieg

Einstieg in Tkinter

Grafische Oberflächen bestehen aus sogenannten Widgets, die meist mit der Maus bedient werden und damit eine Aktion auslösen. Widgets können sein: Buttons, ein- und mehrzeilige Eingabefelder, Labels, List- und Comboboxen … Das Programm läuft in einer „Endlosschleife“ und wartet auf Nutzereingaben mit Maus und Tastatur, mit den Aktionen ausgelöst werden, u.a. auch das Beenden des Programms.

Ein erstes Beispiel

tkinter01.py
# Tkinter wird importiert
import tkinter
 
# Funktion zum beenden des Programms.
def ende():
    main.destroy()
 
# Das Hauptfenster wird erzeugt.
main = tkinter.Tk()
 
# Ein Button wird erzeugt.
# Dem Button wird die Funktion ende() zugeordnet.
b = tkinter.Button(main, text = "Beenden", command = ende)
# Der Button wird zum Hauptfenster hinzugefügt.
b.pack()
 
# Die Hauptschleife wird gestartet.
main.mainloop()
  • Mit import tkinter wird die Tkinter-Bibliothek importiert.
  • Die Funktion ende() beendet die Hauptschleife des Programms und zerstört das Tk-Objekt.
  • Mit main = tkinter.Tk() wird ein Objekt der Klasse Tk erzeugt. Es repräsentiert das Hauptfenster des Programms.
  • Mit b = tkinter.Button(main, text = "Beenden", command = ende) wird ein Objekt vom Typ Button (ein Widget) erzeugt. Das Elternobjekt ist main, also das Hauptfenster. Die Aufschrift des Buttons (Eigenschaft text) ist „Beenden“. Dem Button ist die Funktion ende() zugeordnet (command=ende), d.h. wenn der Button mit der Maus gedrückt wird (Hauptaktion des Buttons), wird die Funktion Ende aufegrufen und das Programm beendet.
  • Mit b.pack() wird der Button zum Hauptfenster hinzugefügt.
  • Mit main.mainloop() wird das Hauptfenster des Programms erzeugt und die Hauptschleife gestartet. Das Programm wartet jetzt auf Maus- und Tastaturaktionen, bis es beendet wird.

Das Programmfenster sieht eher unspektakulär aus:

Aufgabe 1

Teste das Programm! Verändere die Aufschrift des Buttons!

Weitere einfache Widgets

Bisher haben wir das Widget Button kennengelernt. Durch einen Mausklick auf einen Button können wir bestimmte Aktionen ausführen. Damit wir einfache Programme schreiben können lernen wir in diesem Abschnitt noch weitere Widgets kennen. Labels sind Beschriftungsflächen in einem Programm. Sie können Text und Bilder enthalten. Entries sind einzeilige Eingabefelder, auf deren Inhalt mit der Methode get() zugegriffen werden kann. Im Programm werden einige Eigenschaften dieser Widgets verändert. Diese Eigenschaften sind in einen Dictionary implementiert und man kann mit Hilfe des Schlüssels (Name der Eigenschaft) darauf zugreifen.

Bei den einzelnen Widgets sind das jeweils die folgenden Eigenschaften:

Button : command, text

Entry: width, text

Label: font, anchor, text

Über die Links gelangt man zu einer Übersicht aller Eigenschaften der Widgets.

Bisher fügen wir unsere Widgets mit der Methode ''pack()' zum Hauptfenster hinzu. Im nächsten Abschnitt werden wir bessere Möglichkeiten zum Anordnen der Widgets kennenlernen.

Im folgenden Programm wird über die Kommentare beschrieben, wie die Widgets eingesetzt werden.

tkinter02.py
# Tkinter wird importiert
import tkinter
# Funktion zum Beenden der Hauptschleife
def ende():
    main.destroy()
# Funktion zum Berechnen des Ergebnisses
def ausrechnen():
    # Die Zeichenkette aus dem Eingabefeld wird in der Variable eingabe abgespeichert
    eingabe = eEingabe.get()
    # Es wird versucht die Zeichenkette in eine Kommazahl umzuwandeln.
    try:
        zahl = float(eingabe)
        # Wenn das Umwandeln erfolgreich ist wird die Texteigenschaft des Ergenislabels geändert:
        # Es wird die Quadratzahl berechnet und das Ergebnis wird als Zeichenkette angehängt
        lErgebnis["text"] = "Ergebnis: "+str(zahl * zahl)
    except:
        # Wenn die Eingabe keine Zahl war, wird die Eigenschaft text des Ergebnislabels geändert:
        # Ausgabe: Bitte eine Zahl eingeben!
        lErgebnis["text"] = "Bitte eine Zahl eingeben!"
 
 
# Das Hauptfenster wird erzeugt
main = tkinter.Tk()
 
# Ein Label für die Überschrift mit dem Text Quadratzahlen wird erzeugt
lUeberschrift = tkinter.Label(main, text = "Quadratzahlen")
# Die Schriftart des Labels wird geändert
lUeberschrift["font"] = "Sans 16 bold"
# Die Überschrift wird zum Hauptfenster hinzugefügt
lUeberschrift.pack()
 
# Ein Eingabefeld wird erzeugt.
eEingabe = tkinter.Entry(main)
# Das Eingabefeld wird zum Hauptfenster hinzugefügt.
eEingabe.pack()
 
# Ein Label für das Ergebnis wird erzeugt.
lErgebnis = tkinter.Label(main, text = "Ergebnis: ")
# Die Labelbreite wird auf 20 Zeichen gesetzt
lErgebnis["width"] = 20
# Der Labeltext wird links ausgerichtet.
lErgebnis["anchor"] = "w"
# Das label wird zum Hauptfenster hinzugefügt.
lErgebnis.pack()
 
# Ein Button zum Ausrechnen mit der Aufschrift "Ausrechnen" wird erzeugt
# und mit der Funktion ausrechnen() verknüpft.
bAusrechnen = tkinter.Button(main, text = "Ausrechnen", command = ausrechnen)
# Der Button wird zum Hauptfenster hinzugefügt.
bAusrechnen.pack()
 
# Ein Button zum Beenden mit der Aufschrift "Beenden" wird erzeugt
# und mit der Funktion ende() verknüpft.
bEnde = tkinter.Button(main, text = "Beenden", command = ende)
# Der Button wird zum Hauptfenster hinzugefügt.
bEnde.pack()
 
# Die Hauptschleife wird gestartet.
main.mainloop()

Aufgabe 2

Teste das Programm. Verändere die Eigenschaften der Widgets! Überlege dir neue Möglichkeiten der Berechnung (z.B. die Wurzel einer Zahl)!

Aufgabe 3

Schreibe ein Tkinter-Programm für einen einfachen Taschenrechner!

python/tkinter/tkintereinstieg.txt · Zuletzt geändert: 2023/09/27 12:34 von lutz