Rozdział 16 · Tworzenie fajnych aplikacji z Tkinter

Frame i LabelFrame: organizują interfejs

Zanim umieścisz dziesiątki widżetów, podziel okno na zrozumiałe regiony.

Frame jest struktura przed układem

ttk.Frame jest kontenerem bez własnej widocznej zawartości, które grupują powiązane widgety w znaczące regiony:

root
toolbar_frame
content_frame
status_frame
Podzielenie okna na nazwane regiony upraszcza zarówno kod, jak i myślenie o layout.
frame.py
import tkinter as tk
from tkinter import ttk

root = tk.Tk()

toolbar_frame = ttk.Frame(root)
content_frame = ttk.Frame(root)
status_frame = ttk.Frame(root)

toolbar_frame.pack(side="top", fill="x")
content_frame.pack(side="top", fill="both", expand=True)
status_frame.pack(side="bottom", fill="x")

W każdej klatce możesz używać niezależnie pack() lub grid() – zasada „nie mieszać”

LabelFrame jest grupą wizualnie podpisaną

Górny pasek z przyciskami Otwórz/Zapisz, poniżej — podpisana ramka „Ustawienia” z dwoma polami wyboru
Toolbar przez Frame (bez ramki) i LabelFrame z widocznym podpisem „Ustawienia”
labelframe.py
nastrojki = ttk.LabelFrame(root, text=„Ustawienia”)
nastrojki.pack(padx=10, pady=10, fill="x")

ttk.Checkbutton(nastrojki, text=„Mroczny motyw”).pack(anchor="w")
LabelFrame nie jest na każdą drobnostkę
Zastosowanie LabelFrame dla naprawdę powiązanej grupy ustawień, a nie dla każdego pojedynczego widżetu — w przeciwnym razie interfejs zamienia się w drabinę klatek.
Praktyka: organizowanie interfejsu poprzez Frame
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →