Impressum
< Index

GUI - Frame und Layout

Das Frame-Widget, erlaubt es Layout-Elemente zu gruppieren. Bei größeren Oberfläche fasst man Teile der GUI in Frames zusammen um sie leichter anordnen zu können.
Die wichtigsten Eigenschaften:
  • borderwidth/bd Gibt die Breite des Rahmens an (standardmäßig ist sie 0)
  • relief Gibt die Rahmenart an:
    • FLAT kein Rahmen (Standard)
    • RAISED erhoben
    • SUNKEN eingesunken
    • GROOVE vertiefter Rahmen
    • RIDGE erhöhter Rahmen
  • padxLinker und rechter Abstand vom Rand zum Inhalt des Frames.
    Entweder eine Zahl, dann ist der linke und rechte Abstand gleich groß oder als Tupel (z.B. padx=(5,10)), dann ist der rechte Abstand 5 und der linke ist 10.
  • pady Abstand oben und unten vom Rand. Analog zu padx.
Ein Fenster mit vier Frames, jedes mit einem anderen Relief.
Die Relief-Optionen.
Ein Frame bekommt, wie jedes andere Widget, als ersten Parameter seinen Eltern-Container. Dieser kann das Fenster an sich oder ein anderer Frame sein.
Das Fenster kann mit einen anderen Layout-Manager haben, als die Frames die er enthält. Jeder Frame kann ebenfalls sein eigenes Layout haben.
Um Komponenten von tkinter anordnen zu lassen gibt es pack und grid.

Pack

Mit der Methode pack bringt man ein Widget auf die Oberfläche.
Die pack-Methode hat einige (optionale) Parameter:
5 Frames mit Frames, die in unterschiedlicher Reihenfolge hinzugefügt wurde.
5 Frames. In jedes wurden Labels eingefügt.
Die Zahlen geben die Reihenfolge an, der Text die side.

Grid

Die Methode grid weißt einem Widget eine Zelle im Gitter der Oberfläche zu.
Die pack-Methode hat einige (optionale) Parameter: Anders als bei pack kann man hier für jede Zeile und Spalte angeben, wie sich diese vergrößert, wenn man das Fenster vergrößert.
Mit columnconfigure(Spalte, weight=Gewicht) legt man für die Spalte fest wie stark sie sich vergrößert. Das Gewicht ist eine ganze Zahl (Standard: 0), desto größer diese Zahl ist, desto stärker verbreitert sich die Spalte. Der Platz wird durch die Summe aller Gewichte geteilt und dann für jedes Widget mit seinem Gewicht multipliziert, um den zusätzlichen Platz für das Widget zu ermitteln.
Mit rowconfigure(Zeile, weight=Gewicht) kann man die Vergrößerung in y-Richtung analog steuern.
Eine Eingabemaske mit Grid
from tkinter import *
class Fenster(Tk):
    def __init__(self):
        Tk.__init__(self)
        
        Label(self, text="Vorname:").grid(row=0,column=0)
        Label(self, text="Nachname:").grid(row=1,column=0)
        Entry(self).grid(row=0,column=1, sticky="ew")
        Entry(self).grid(row=1,column=1, sticky="ew")
        
        # Spalte 1 soll in x-Richtung wachsen
        alles.columnconfigure(1, weight=1)
Ein Frame mit 2 Labels und 2 Spalten
2x2 Grid
Ein Frame mit 2 Labels und 2 Spalten
Beim Vergrößern ändert sich nur die Breite der Entrys.