Der pack-Manager
Experimente mit dem pack-Manager
Der pack-Manager (bzw. Packer) bestimmt die Anordnung von GUI-Komponenten automatisiert unter Berücksichtigung von Vorgaben im Programm.
Einige der vielen verschiedenen Gestaltungsmöglichkeiten mit dem pack-Manager sollen hier anhand einfacher GUIs aufgezeigt werden.
Beispiel 1: Aufruf der pack-Methode
Die pack
-Methode wird hier ohne Parameter aufgerufen.
Das Programm erzeugt die folgende GUI:

Beachte, dass die Größe des Fensters hier vom pack-Manager bestimmt wird. Die einzelnen GUI-Komponenten werden mit dem Aufruf der pack
-Methode in das Gesamtlayout übernommen und dabei untereinander angeordnet.
Aufgabe 1
Ändere die Reihenfolge der Aufrufe der pack
-Methode. Welche Auswirkung hat dies?
Beispiel 2: Seitenvorgaben
Beachte die Ergänzungen im Aufruf der pack
-Methode.
Das Programm erzeugt jetzt die folgende GUI:

Aufgabe 2
(a) Probiere auch folgende Varianten bei der Seitenfestlegung aus: side='right'
, side='top'
, side='bottom'
.
(b) Welches Layout erhält man beim folgenden Programm?
(c) Experimentiere selbst mit den Seitenfestlegungen.
Beispiel 3: Breite und Höhe anpassen
Mit dem fill
-Attribut kann man Höhe und Breite einer GUI-Komponente an den vorgegebenen Rahmen anpassen.
Das Programm erzeugt die folgende GUI:

Beachte, dass die Breite des Fensters durch einen voreingestellten Wert bestimmt wird.
Aufgabe 3
(a) Welche Auswirkungen haben die Festlegungen fill='x'
, fill='y'
, fill='both'
?
(b) Variiere manuell die Fenstergröße. Welche Auswirkungen hat dies auf die GUI?
(c) Führe selbst weitere Experimente durch.
Beispiel 4: Abstände zum Rand bzw. Nachbarn festlegen
Man kann auch einen Raum um eine GUI-Komponente festlegen.
Das Programm erzeugt die folgende GUI:

Aufgabe 4
Führe selbst weitere Experimente durch.
Beispiel 5: Rahmen nutzen
Zur weiteren Strukturierung einer grafischen Benutzeroberfläche benutzt man Rahmen.
Das Programm erzeugt die folgende GUI:

Rahmen werden durch Objekte der Klasse Frame
implementiert.
Rahmen bilden "Container" für GUI-Komponenten. Mit dem master
-Attribut wird die Zugehörigkeit zu einem solchen "Container" festgelegt. Hierdurch ergibt sich eine sog. Master-Slave-Hierarchie.

Aufgabe 5
Führe selbst weitere Experimente durch.
Beispiel 6: Eine komplexe grafische Benutzeroberfläche
Ziel ist es, die folgende grafische Benutzeroberfläche mit dem pack-Manager zu erzeugen.

Der folgende (noch unvollständige) Quelltext soll als Grundlage dienen.
Aufgabe 6
(a) Entwickle zunächst die Master-Slave-Struktur zu den GUI-Komponenten. Stelle diese Struktur mit einem Baumdiagramm dar und implementiere sie im Programm.
(b) Ergänze anschließend die Attribute zu den Aufrufen der pack
-Methoden.
Zur Kontrolle: Hier findest du eine Lösung.
Zusammenfassung
Die Grobstruktur des Layouts wird durch die Master-Slave-Struktur der GUI-Komponenten festgelegt.
Der Packer ordnet die Slave-Komponenten jeweils innerhalb der zugehörigen Master-Komponenten an. Folgende Parameter können dabei gesetzt werden.
Parameter | Bedeutung |
---|---|
side | Seite der Master-Komponente, an die die GUI-Komponente gesetzt wird. Mögliche Werte: 'left', 'right', 'top', 'bottom'. |
padx, pady | Leerer Platz rechts und links bzw. ober- und unterhalb der GUI-Komponente |
fill | Die GUI-Komponente wird so vergrößert, dass sie den gesamten zur Verfügung stehenden Platz ausfüllt. Mögliche Werte: 'x', 'y', 'both'. |
anchor | siehe tkinter-Dokumentation |
expand | siehe tkinter-Dokumentation |