Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
|
python:tk [2023/03/13 17:05] root [Informationen über Widget-Objekte] |
python:tk [2023/03/28 07:58] (aktuell) root [Grid] |
||
|---|---|---|---|
| Zeile 97: | Zeile 97: | ||
| |winfo_vieweable|Ob das Widget derzeit angezeigt wird oder versteckt ist| | |winfo_vieweable|Ob das Widget derzeit angezeigt wird oder versteckt ist| | ||
| | | ||
| + | |||
| + | ===== Geometry-Manager ===== | ||
| + | |||
| + | * managed die Platzierung der Widgets im Fenster | ||
| + | * definiert wie mit leerem Platz umgegangen wird | ||
| + | * wie mit Größenänderung des Fensters umgegangen wird | ||
| + | * Neuplatzierung der Widgets | ||
| + | * verkleinern der Widgets usw. | ||
| + | * es gibt mehrere | ||
| + | * der derzeit üblicherweise genutzte ist grid | ||
| + | * früher wurde pack verwendet | ||
| + | * erst durch Aufrufen des Geometry-Managers für ein Widget wird es platziert und sichtbar | ||
| + | |||
| + | * verschiedene Elemente können einen Geometry-Manager haben | ||
| + | * zum Beispiel root und innerhalb dessen ein Frame | ||
| + | * der Geometry-Manager des Frame-Elements managed nur die Elemente innerhalb des Frames | ||
| + | * und nur den Platz den das Frame-Element hat | ||
| + | * Elemente die andere enthalten werden Master genannt und die enthaltenen Elemente Slave | ||
| + | * ein Master kann (wenn es nicht root ist) gleichzeitig auch Slave sein | ||
| + | * da es in einem anderen Element enthalten ist und selbst Elemente enthält | ||
| + | |||
| + | |||
| + | ==== Grid ==== | ||
| + | |||
| + | * verhält sich ähnlich einer HTML-Tabelle | ||
| + | * so ähnlich wie man früher per HTML-Tabellen Layouts erstellt hat | ||
| + | * es gibt eine Tabelle mit Spalten und Zeilen | ||
| + | * ein Element wird jeweils einer Spalte und Zelle zugeordnet | ||
| + | * ein Element kann allerdings über mehrere Spalten und Zellen gehen (wenn das explizit angegeben wird) | ||
| + | * die Tabelle nimmt per Default nur so viel Platz ein wie benötigt wird | ||
| + | * Elemente verteilen sich also nicht unbedingt gleichmäßig über den gesamten Fensterplatz | ||
| + | * Spalten und Zeilen sind nur so groß wie die Elemente und deren Ausrichtung verlangt | ||
| + | * sie beginnen links (Spalten) und oben (Zeilen) | ||
| + | * leere Zeilen haben keine Größe | ||
| + | * es kann optional definiert werden das bestimmte Zeilen/ | ||
| + | |||
| + | |||
| + | ===== Events ===== | ||
| + | |||
| + | * Ereignisse wie Mausklicks, Tastenanschläge usw. | ||
| + | * oder interne Events wie Timer | ||
| + | |||
| + | ==== Eventloop ==== | ||
| + | |||
| + | <sxh python> | ||
| + | from tkinter import * | ||
| + | root = Tk() | ||
| + | root.mainloop() | ||
| + | </ | ||
| + | |||
| + | * root.mainloop() startet hier die Eventloop | ||
| + | * mainloop ist Teil des root-Elements, | ||
| + | * Mainloop fragt bei jedem Durchlauf alle Objekte ab ob für sie ein Ereignis vorliegt | ||
| + | * Mainloop läuft bis alle Fenster geschlossen wurden | ||
| + | * Mainloop sollte nicht blockiert werden (keine länger dauernden Aufgaben als Teil von ihr ausgeführt werden) | ||
| + | * führt zu fehlenden Reaktionen auf Benutzerereignisse | ||
| + | * führt zu fehlenden Re-Draws (neuzeichnen der Elemente wenn sich etwas ändert oder Fenster gewechselt wurden) | ||