Etykiety, guziki i ich rozmieszczenie
Pierwsze interaktywne widgety – i jak Tkinter umieszcza je w oknie.
Widżet — wizualny obiekt interfejsu
Widżet (widget) — dowolny element interfejsu widzialnego/interaktywnego: etykieta,
przycisk, pole wejściowe. Podobnie jak w rozdziale 14, każdy widżet jest instancją klasy z własnymi atrybutami i
metodami. Wytwórnia (Label) pokazuje tekst,
przycisk (Button) reaguje na kliknięcie.
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text=„Cześć, Tkinter!”)
label.pack()
def na_knopku_nazhali():
print(„Przycisk został naciśnięty!”)
button = tk.Button(root, text=„Click me”, command=na_knopku_nazhali)
button.pack()
root.mainloop()
tk.Button(root, ...) tworzy tylko obiekt przycisku. Nie pojawi się on w oknie, dopóki go nie umieścisz Menedżer Geometrii — .pack() tutaj, albo .grid() (Rozdział 16.7), lub .place() (Rozdział 16.15).command jest funkcją, a nie wywołaniem funkcji
Parametr command powiązanie przycisku z funkcją jest ważne
aby przekazać samą funkcję, bez nawiasów: command=na_knopku_nazhali, a nie command=na_knopku_nazhali().
na_knopku_nazhali — to sama funkcja jako obiekt (rozdział 13). na_knopku_nazhali() jest wywołanie funkcje obecnie. command=na_knopku_nazhali() zadzwoni natychmiast, raz, podczas tworzenia przycisku — i połączy przycisk z tym, co funkcja powrócił (zazwyczaj None), a nie z samą funkcją. Kliknięcia przycisku po tym niczego nie wywołają.
button.state(["disabled"]) z ttk-widgets lub state="disabled" przy utworzeniu. Przydatne, gdy dane nie są jeszcze gotowe do działania (Rozdział 16.23 - walidacja).Szczegóły pack
.pack() najprostszy sposób na umieszczenie widżetu w oknie.
Domyślnie widżety są ułożone pod sobą od góry do dołu, ale istnieją przydatne parametry:
label.pack(side="left", padx=10, pady=10)
# side: top (domyślnie), bottom, left, right
# padx/pady: zewnętrzny margines poziomy/pionowy
Więcej o fill/expand i grupowanie
przez Frame — w sekcjach 16.13–16.14.