Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
modul:m323:learningunits:lu03:callbacks [2026/08/25 11:59] – Timeout-Beispiel korrigiert: timeout=2 loest den except-Zweig tatsaechlich aus adminmodul:m323:learningunits:lu03:callbacks [2026/09/08 08:34] (aktuell) – Animation zur Umkehrung der Kontrolle eingebettet admin
Zeile 3: Zeile 3:
 Callback Funktionen sind eine klassische Anwendung von First-Class- und Higher-Order-Functions. Callback Funktionen sind eine klassische Anwendung von First-Class- und Higher-Order-Functions.
  
 +===== Animation: das Konzept hinter Callbacks =====
 +
 +Der erste Tab zeigt das Muster ohne jedes Framework: Ihre Funktion weiss, **was** geschehen soll, die fremde Funktion bestimmt, **wann** und **wie oft**. Man sieht die Übergabe nach unten und den Rückruf nach oben – und dass ein anderer Callback das Verhalten ändert, ohne dass am fremden Code etwas angepasst wird. Die beiden weiteren Tabs zeigen dasselbe Muster in echt: beim Button-Klick (samt dem Klammernfehler weiter unten) und beim nebenläufigen Warten.
 +
 +{{url>https://templates-python.github.io/m323_html/lu03/callbacks.html 100%,880px noborder|Animation: Callbacks, wer ruft wen und wann}}
  
 ===== Callbacks in der GUI Programmierung ===== ===== Callbacks in der GUI Programmierung =====
Zeile 38: Zeile 43:
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 Achten Sie auf ''command=on_button_click'' – **ohne Klammern**. Die Funktion wird hier nicht aufgerufen, sondern nur //übergeben//. Mit ''command=on_button_click()'' würde die Funktion sofort beim Erstellen des Buttons einmal ausgeführt und dem Button anschliessend ihr Rückgabewert ''None'' übergeben – der Button täte danach beim Klicken gar nichts. Das ist einer der häufigsten Anfängerfehler in der GUI-Programmierung. Achten Sie auf ''command=on_button_click'' – **ohne Klammern**. Die Funktion wird hier nicht aufgerufen, sondern nur //übergeben//. Mit ''command=on_button_click()'' würde die Funktion sofort beim Erstellen des Buttons einmal ausgeführt und dem Button anschliessend ihr Rückgabewert ''None'' übergeben – der Button täte danach beim Klicken gar nichts. Das ist einer der häufigsten Anfängerfehler in der GUI-Programmierung.
 +
 +Die beiden letzten Schritte im zweiten Tab der Animation oben zeigen genau diesen Fall.
 </WRAP> </WRAP>
  
Zeile 109: Zeile 116:
 </code> </code>
  
-Das ganze Programm dauert 3 Sekunden statt 5, weil die beiden Wartezeiten sich überlappen.+Das ganze Programm dauert 3 Sekunden statt 5, weil die beiden Wartezeiten sich überlappen. Der dritte Tab der Animation oben zeigt diesen Ablauf auf einer Zeitachse, mit der sequenziellen Variante als Vergleich.
  
 === Beispiel: Asynchrone Dateioperation === === Beispiel: Asynchrone Dateioperation ===
  • modul/m323/learningunits/lu03/callbacks.txt
  • Zuletzt geändert: 2026/09/08 08:34
  • von admin