Python Tutorial
- jetzt Python programmieren lernen

Platzieren der Elemente in der GUI über pack() versus grid()

Bisher haben wir unsere Elemente einfach über die Methode .pack() ausgegeben. Dies ist je nach Anwendungsfall sehr aufwendig. Schauen wir uns die Möglichkeiten über .grid() an. Das englische Wort „grid“ bedeutet nichts anderes wie Gitter. Die zwischenräume des Gitters können sehr einfach angegeben werden über die Reihe („row“) und Spalte („colum“).

Im folgenden Beispiel erzeugen wir 3 Textausgaben mit unterschiedlichen Hintergrundfarben, die wir dann durch das Gitter sehr einfach platzieren können.

import tkinter as tk

root = tk.Tk()

label1 = tk.Label(root, text="Hallo Welt", bg="orange")
label1.grid(row=0, column=0)

label2 = tk.Label(root, text="R1 / C1", bg="lightgreen")
label2.grid(row=1, column=1)

label3 = tk.Label(root, text="R2 / C2", bg="lightblue")
label3.grid(row=2, column=2)

root.mainloop()

Wir sehen hier sehr schön, wie die einzelnen Texte in die entsprechenden Reihen und Spalten platziert werden. Dabei bestimmt der benötigte Platz des Textes die Spaltenbreite.

[bild[Ausgabe von TKinter über grid()]]

Haben wir eine weitere Ausgabe in Spalte 0 und Zeile 3, die weniger Platz benötigt, wird diese standardmäßig mittig ausgerichtet:

[bild[Ausgabe in GUI standardmäßig mittig]]

Über die Anweisung print(dir(tk.Grid)) erhalten wir alle Informationen über die Möglichkeiten von Grid.

['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', 'bbox', 'columnconfigure', 'config', 'configure', 'forget', 'grid', 'grid_bbox', 'grid_columnconfigure', 'grid_configure', 'grid_forget', 'grid_info', 'grid_location', 'grid_propagate', 'grid_remove', 'grid_rowconfigure', 'grid_size', 'grid_slaves', 'info', 'location', 'propagate', 'rowconfigure', 'size', 'slaves']

Und die Attribute für unser grid(…) über print(help(tk.Grid.grid)):

Wir können also folgende Attribute mitgeben:

grid_configure(self, cnf={}, **kw)

Position a widget in the parent widget in a grid. Use as options:

column=number - use cell identified with given column (starting with 0)

columnspan=number - this widget will span several columns

in=master - use master to contain this widget

in_=master - see 'in' option description

ipadx=amount - add internal padding in x direction

ipady=amount - add internal padding in y direction

padx=amount - add padding in x direction

pady=amount - add padding in y direction

row=number - use cell identified with given row (starting with 0)

rowspan=number - this widget will span several rows

sticky=NSEW - if cell is larger on which sides will this

widget stick to the cell boundary

Über das Attribut sticky= können wir unseren Inhalt an einer Seite ausrichten und sind nicht auf die zentrierte Ausgabe festgelegt. Als Attributwert diesen die Himmelsrichtungen wir „n, s, w, e, sw, se, ..“

import tkinter as tk

root = tk.Tk()

label1 = tk.Label(root, text="Hallo Welt", bg="orange")
label1.grid(row=0, column=0)

label2 = tk.Label(root, text="R1 / C1", bg="lightgreen")
label2.grid(row=1, column=1)

label3 = tk.Label(root, text="R2 / C2", bg="lightblue")
label3.grid(row=2, column=2)

label4 = tk.Label(root, text="R2/C0", bg="yellow")
label4.grid(row=2, column=0, sticky='e')

root.mainloop()

Unser gelber Inhalt (R2/C0) ist jetzt rechts ausgerichtet – sprich im Osten (englisch east = „e“)

[bild[Inhalt in den Zellen ausrichten, z.B. rechtsbündig]]

Weiterempfehlen • Social Bookmarks • Vielen Dank

Bitte unterstützen Sie dieses Projekt

Sie können dieses Projekt in verschiedenen Formen unterstützen - wir würden uns freuen und es würde uns für weitere Inhalte motivieren :).

Empfehlen Sie es weiter - wir freuen uns immer über Links und Facebook-Empfehlungen.

Das neue E-Book zum Kurs gibt es zum Kaufen.

Sie können uns auch eine Spende über PayPal zukommen lassen.

Bestellen Sie Bücher über folgenden Link bei Amazon:
Bücher über Python

Vielen Dank für Ihre Unterstützung