Rozdział 16 · Tworzenie fajnych aplikacji z Tkinter

pack szczegółowo: fill, expand i zagnieżdżone ramki

pack nie jest tylko z góry: ma kontrolę nad wolną przestrzenią.

pack: sposobu przydzielania przestrzeni

side decyduje, po której stronie zostanie położony następny widget, fill — rozciągać ją na całą dostępną szerokość/wysokość, a expand to, czy wykorzystać dodatkowe wolne miejsce:

ParametrZnaczenieEfekt
fill"x"rozciągnąć widget na szerokość przydzielonego mu paska
fill"y"rozciągnąć widżet na wysokość przydzielonego mu pasa
fill"both"rozciągają zarówno szerokość, jak i wysokość
expandTruedać widżetowi dodatkową wolną przestrzeń w kontenerze
pack_fill_expand.py
ttk.Label(root, text=„Top”, background="#E7DEFF").pack(side="top", fill="x")
ttk.Label(root, text=„Center”, background="#B9A0FC").pack(side="top", fill="both", expand=True)
ttk.Label(root, text=„Bottom”, background="#E7DEFF").pack(side="bottom", fill="x")
Wcięcie zewnętrzne i wewnętrzne to nie to samo
padx/pady u .pack(...) — to wcięcie na zewnątrz widżetu, między nim a sąsiadami. Odstęp w środku samego widżetu (pomiędzy ramką a treścią) może być konfigurowana osobno — na przykład przez padding= u ttk.Frame.

Zagnieżdżone ramki + pack

vlozhennye_frejmy.py
forma_frame = ttk.Frame(root, padding=10)
forma_frame.pack(fill="x")

ttk.Label(forma_frame, text=„Imię:”).pack(side="left")
ttk.Entry(forma_frame).pack(side="left", fill="x", expand=True)

Etykieta jest naciskana po lewej, a pole wejściowe zajmuje całą pozostałą przestrzeń poziomą to typowa kombinacja side="left" + fill="x" + expand=True dla formy Signature - Stretch Field.

Praktyka: pack z fill i expand
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →