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)
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