Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:tkinter:tkintereinstieg

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
python:tkinter:tkintereinstieg [2023/09/27 08:33] – [Ein erstes Beispiel] lutzpython:tkinter:tkintereinstieg [2023/09/27 12:34] (aktuell) – [Weitere einfache Widgets] lutz
Zeile 32: Zeile 32:
   * Mit ''%%b.pack()%%'' wird der Button zum Hauptfenster hinzugefügt.   * 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.   * 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:
 +
 +{{ :python:tkinter:einstieg.png?nolink |}}
  
 **Aufgabe 1** **Aufgabe 1**
Zeile 38: Zeile 42:
  
 =====Weitere einfache Widgets===== =====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 [[https://www.w3schools.com/python/python_dictionaries.asp | 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:
 +
 +[[https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/button.html | Button]] : command, text
 +
 +[[https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/entry.html | Entry]]: width, text
 +
 +[[https://anzeljg.github.io/rin2/book2/2405/docs/tkinter/label.html | 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.
 +
 +<code python 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()
 +</code>
 +
 +{{ :python:tkinter:einfache_widgets.png?nolink |}}
 +
 +**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:aufgabe3.png?nolink |}}
python/tkinter/tkintereinstieg.1695796439.txt.gz · Zuletzt geändert: 2023/09/27 08:33 von lutz