Rozdział 16 · Tworzenie fajnych aplikacji z Tkinter

Zmienne Tkinter

Specjalne zmienne, które same aktualizują powiązane z nimi widgety na ekranie.

Zmienne normalne Python nie „wiedzą” StringVar, IntVar, BooleanVar, DoubleVar.

peremennye_tkinter.py
import tkinter as tk

root = tk.Tk()

imya = tk.StringVar(value=„Gość”)

label = tk.Label(root, textvariable=imya)   # etykieta sama się zaktualizuje przy zmianie imya
label.pack()

def smenit_imya():
    imya.set("Cartesian")

button = tk.Button(root, text=„Zmień nazwę”, command=smenit_imya)
button.pack()

root.mainloop()

Wartość jest uzyskiwana przez .get() i zmieniane przez metodę .set() — a widżety powiązane przez textvariable (lub variable u Radiobutton/Checkbutton), aktualizuje się automatycznie na ekranie.

imya : StringVar
wartość = „Gość”
są powiązane przez jedną zmienną
label (textvariable=imya)
Pojedynczy StringVar może łączyć wiele widżetów jednocześnie — wszystkie widzą tę samą wartość.
Zmienne Tk nie zastępują zwykłych zmiennych Pythona
StringVar i podobne są specjalnym narzędziem do komunikacji z widgetami, a nie zastępowaniem wszystkich zmiennych programowych universal-. Regularne int, str, list nadal świetnie sprawdzają się w przechowywaniu danych aplikacji, które nie pojawiają się bezpośrednio w widżecie.

Trochę głębiej: trace_add

Można reagować na każdą zmianę Tk-zmiennej:

trace_add.py
def pri_izmenenii(*args):
    print(„Nowa wartość:”, imya.get())

imya.trace_add("write", pri_izmenenii)

Jest to wygodne dla interfejsów „reaktywnych”

Praktyka: StringVar i powiązane widgety
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie
Otwórz praktykę →