python.casapython.casa
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
Home
  • Thema 1 - Einführung Programmiersprache
  • Thema 2 - Variablen und Datentypen
  • Thema 3 - Boolsche Algebra und Zeichenketten
  • Thema 4 - Datum und Zeit
  • Thema 5 - Kontrollstrukturen und Listen
  • Thema 6 - Funktionen und Flowcharts
  • Thema 7 - Objektorientierte Programmierung
  • Thema 8 - Ein- und Ausgabe
  • Thema 9 - Module und Import
  • Thema 10 - Datenbanken
  • Thema 11 - Grafische Benutzeroberfläche
  • Thema 12 - Webapplikation mit Python Flask
  • Thema 13 - Versionskontrolle mit Git
  • Thema 14 - Dokumentation mit Markdown
  • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
GitHub
  • Stundenplan
  • Teil 1

    • Thema 1 - Einführung Programmiersprache
      • Slides Thema 1
      • Übungen Thema 1
    • Thema 2 - Variablen und Datentypen
      • Slides Thema 2
      • Übungen Thema 2
    • Thema 3 - Boolsche Algebra und Zeichenketten
      • Slides Thema 3
      • Übungen Thema 3
    • Thema 4 - Datum und Zeit
      • Slides Thema 4
      • Übungen Thema 4
    • Thema 5 - Kontrollstrukturen und Listen
      • Slides Thema 5
      • Übungen Thema 5
    • Thema 6 - Funktionen und Flowcharts
      • Slides Thema 6
      • Übungen Thema 6
    • Thema 7 - Objektorientierte Programmierung
      • Slides Thema 7
      • Übungen Thema 7
    • Thema 8 - Ein- und Ausgabe
      • Slides Thema 8
      • Übungen Thema 8
  • Teil 2

    • Thema 9 - Module und Import
      • Slides Thema 9
      • Übungen Thema 9
    • Thema 10 - Datenbanken
      • Slides Thema 10
      • Übungen Thema 10
    • Thema 11 - Grafische Benutzeroberfläche
      • Slides Thema 11
        • Grafische Benutzeroberfläcche
          • Lernziele
          • Grafische Benutzeroberfläche
          • Tkinter
          • Tkinter Fenster
          • Tkinter Fenster anzeige
          • Funktionen für Elemente
          • Button und Labels
          • Elemente-Klassen
          • Elemente laden
          • Button und Labels anzeigen
          • Elemente platzieren
          • Elemente mit Grid platzieren
          • Elemente mit Grid anzeigen
          • Aufgaben 1
          • Eingabe in GUI
          • Eingabefeld
          • Menü hinzufügen
          • Fenster mit Menü anzeigen
          • Messagebox hinzufügen
          • Messagebox anzeigen.
          • Aufgaben 2
          • Review
      • Übungen Thema 11
    • Thema 12 - Webapplikation mit Python Flask
      • Slides Thema 12
      • Übungen Thema 12
    • Thema 13 - Versionskontrolle mit Git
      • Slides Thema 13
      • Übungen Thema 13
    • Thema 14 - Dokumentation mit Markdown
      • Slides Thema 14
    • Thema 15 - Jupiter-Notebooks, SciPy und Matplotlib
      • Slides Thema 15
      • Übungen Thema 15
  • Prüfung

    • Wissensprüfung 1
    • Wissensprüfung 2
    • Leistungsnachweis

Slides Thema 11

Grafische Benutzeroberfläcche

◀️ Thema 11

⚡Anwesenheit bestätigen

📖 Kapitel 18 Grafische Benutzeroberflächen


Lernziele

Ich kann ...

  • mit Python eine grafische Oberfäche anzeigen.
  • auf dem GUI Felder und Buttons platzieren.
  • Eingaben auf einem GUI verarbeiten.

Grafische Benutzeroberfläche

Die Grafische Benutzeroberfläche (GUI) ermöglicht eine einfachere Interaktion mit Programmen.


Tkinter

Tkinter ist eine vorinstallierte Standardbibliothek mit der man GUIs erstellen kann.

🎬 Führen Sie diese Aktionen aus:

  • Neuer Ordner Thema11 erstellen
  • Ordner mit VSCode öffnen
  • Datei gui.py anlegen

Tkinter Fenster

🎬 Fügen Sie diesen Code hinzu:

from tkinter import *

# Ein Fenster erstellen
fenster = Tk()

# Den Fenstertitle festlegen
fenster.title('Nur ein Fenster')

# Fenster anzeigen und Eingabe abwarten
fenster.mainloop()

Tkinter Fenster anzeige

🎬 Führen Sie das Programm aus.

Sie sollten ein Fenster sehen, solange das Progamm läuft oder bis das Fenster geschlossen wird.


Funktionen für Elemente

Wir können auf dem Fenster Elemente wie Buttons, Labels und Eingabefelder platzieren.

Diese Elemente können wir mit Python-Funktionen verbinden.


Button und Labels

🎬 Fügen Sie die folgenden Funktionen und Elemente vor der Anweisung fenster.mainloop() hinzu:

# Funktion für Button
def button_action():
    anweisungs_label.config(text='Sie haben auf "Ändern" geklickt.')

# Button und Labels erstellen
change_button = Button(fenster, text='Ändern', command=button_action)
exit_button = Button(fenster, text='Beenden', command=fenster.quit)
anweisungs_label = Label(fenster, text='Klicken Sie auf Ändern')

# Elemente in Reihenfolge laden
anweisungs_label.pack()
change_button.pack()
exit_button.pack()

Elemente-Klassen

Die Klassen Button und Label wurden aus der tkinter Bibliothek importiert.

Die Konstruktoren erwarten eine Fenster-Objekt, einen Text und beim Knopf eine Funktion.


Elemente laden

Mit der .pack()-Methode werden die Elemente in das Fenster geladen.

Die Reihenfolge der Elemente wird gemäss der Reihenfolge der Anweisungen geladen.


Button und Labels anzeigen

🎬 Führen Sie das Programm gui.py aus und Klicken Sie auf den Button Ändern.


Elemente platzieren

Statt pack zur Platzierung der Elemente können Sie auch gird(row=1, column=1, pady=10, padx=10) verwenden. Damit platzieren Sie die Elemente in einem Koordinatensystem.

Der erste Wert ist row und der zweite Wert column. Mit pady und padx definieren Sie zusätzliche Abstände.


Elemente mit Grid platzieren

🎬 Ersetzen Sie die pack-Methoden mit den folgenden grid-Methoden:

# Elemente mit Grid laden
anweisungs_label.grid(row=1, column=1, pady=10, padx=10)
change_button.grid(row=2, column=1, pady=10, padx=10)
exit_button.grid(row=3, column=1, pady=10, padx=10)

⭐ gui.py


Elemente mit Grid anzeigen

🎬 Führen Sie das Programm wieder aus.


Aufgaben 1

Lösen Sie die Aufgaben 11.1 und 11.2.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Eingabe in GUI

Mit input kann der Benutzer eine Eingabe machen. Dasselbe funktioniert auch auf einem GUI mit einem Eingabe feld.

🎬 Erstellen Sie eine neue Datei eingabe.py mit diesem Inhalt:

from tkinter import *
fenster = Tk()
fenster.title('Eingabe')

def button_action():
    text = eingabe.get()
    ausgabe.config(text=text)

eingabe = Entry(fenster, width=20)
button = Button(fenster, text='Eintragen', command=button_action)
ausgabe = Label(fenster, text='')

eingabe.pack(padx=10, pady=10)
button.pack(padx=10, pady=10)
ausgabe.pack(padx=10, pady=10)

fenster.mainloop()

Eingabefeld

🎬 Führen Sie das Programm aus, machen Sie eine Eingabe und drücken Sie auf Eintragen.

Mit der get-Methode kann der Text aus dem Eingabefeld ausgelesen werden und mit der config-Methode können die Elemente angepasst werden.


Menü hinzufügen

Sie können "ganz einfach" eine Menüleiste dem Fenster hinzufügen.

🎬 Erstellen Sie eine neue Datei menü.py mit diesem Inhalt:

from tkinter import *
fenster = Tk()
fenster.title('Menü')

# Menüleiste erstellen 
menuleiste = Menu(fenster)
# Menüeintrag erstellen 
datei_menu = Menu(menuleiste, tearoff=0)
# Menüaktion hinzufügen
datei_menu.add_command(label='Schliessen', command=fenster.quit)
# Menüeintrag an Menüleiste übertragen
menuleiste.add_cascade(label='Datei', menu=datei_menu)
# Menüleiste in Fenster laden
fenster.config(menu=menuleiste)          

label = Label(fenster, text='Klick auf "Datei > Schliessen".')
label.pack(padx=30, pady=30)

fenster.mainloop()

Fenster mit Menü anzeigen

🎬 Führen Sie das Programm und die angezeigte Anweisung aus.


Messagebox hinzufügen

Bei einem Fehler können Sie eine Nachricht in einer Messagebox ausgeben.

🎬 Erstellen Sie eine neue Datei messagebox.py mit diesem Inhalt:

from tkinter import *
from tkinter import messagebox
fenster = Tk()
fenster.title('Messagebox')

def ping():
	nachricht = """
    Pong
    """
	messagebox.showinfo(message=nachricht, title='Infos')

button = Button(fenster, text='Ping', command=ping)
button.pack(padx=30, pady=30)

fenster.mainloop()

Damit die Messagebox im Programm verfügbar ist muss Sie explizit mit from tkinter import messagebox importiert werden.

Messagebox anzeigen.

🎬 Führen Sie das Programm und klicken Sie auf den Button.


Aufgaben 2

Lösen Sie die Aufgaben 11.3 und 11.4.

⚡Aufteilung in Gruppen/Breakout-Rooms ⏱️ 10 Minuten


Review

🎯 Wurden die Lernziele erreicht?

⚡ Feedback zu den Zielen einholen.


Edit this page
Last Updated:
Contributors: Janik von Rotz
Next
Übungen Thema 11