Benutzer-Werkzeuge

Webseiten-Werkzeuge


python:tk

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

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/Spalten Priorität über andere haben sollen und das sie den gesamten zur Verügung stehenden Platz füllen sollen
 +
 +
 +===== Events =====
 +
 +  * Ereignisse wie Mausklicks, Tastenanschläge usw.
 +      * oder interne Events wie Timer 
 +
 +==== Eventloop ====
 +
 +<sxh python>
 +from tkinter import *
 +root = Tk()
 +root.mainloop()
 +</sxh>
 +
 +  * root.mainloop() startet hier die Eventloop
 +      * mainloop ist Teil des root-Elements, welches durch instanzieren von Tk entsteht
 +  * 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)
  
python/tk.1678723520.txt.gz · Zuletzt geändert: 2023/03/13 17:05 von root