Rozdział 16 · Tworzenie fajnych aplikacji z Tkinter
Mnóstwo opcji!
Przyciski radiowe do wyboru jednej opcji oraz pola wyboru niezależnych rozwiązań tak/nie.
Do wyboru spośród kilku opcji Tkinter ma przełączniki (Radiobutton — wybierz jedną z kilku) oraz pola wyboru
(Checkbutton – włączaj/wyłączaj każdy osobno).
radiobutton.py
import tkinter as tk
root = tk.Tk()
vybor = tk.StringVar(value="chay")
tk.Radiobutton(root, text=„Herbata”, variable=vybor, value="chay").pack()
tk.Radiobutton(root, text=„Kawa”, variable=vybor, value="kofe").pack()
def pokazat_vybor():
print(f"Wybrałeś: {vybor.get()}")
tk.Button(root, text=„Gotowe”, command=pokazat_vybor).pack()
root.mainloop()
Grupa to wspólny zmienna
Wszystkie przełączniki jednej grupy muszą być używane to samo zmienna (
variable=vybor oba) oraz różne wartości (value="chay" / value="kofe"). Tak Tkinter rozumie, że jest to jedna grupa wzajemnie wykluczających się wariantów.Debug Lab 1: Każdy Radiobutton — własny zmienna
slomannaya_gruppa.py
chay_var = tk.StringVar()
kofe_var = tk.StringVar()
tk.Radiobutton(root, text=„Herbata”, variable=chay_var, value="chay").pack()
tk.Radiobutton(root, text=„Kawa”, variable=kofe_var, value="kofe").pack()
# Оба переключателя можно выбрать ОДНОВРЕМЕННО —
# это уже не взаимоисключающий выбор, а два независимых флажка.
Każdy przycisk ma własne, odrębne zmienna, więc Tkinter nie widzi między nimi związku: wybór jednego nie wpływa na drugi. Zachowanie grupowe przełączników opiera się na wspólnej zmiennej, a nie na wizualnym podobieństwie przycisków.
Poprawiony kod
gruppa_fixed.py
vybor = tk.StringVar(value="chay")
tk.Radiobutton(root, text=„Herbata”, variable=vybor, value="chay").pack()
tk.Radiobutton(root, text=„Kawa”, variable=vybor, value="kofe").pack()
Checkbutton jest niezależnym wyborem
checkbutton.py
saharok = tk.BooleanVar(value=False)
tk.Checkbutton(root, text=„Z cukrem”, variable=saharok).pack()
def pokazat_flazhok():
print(f"Z cukrem: {saharok.get()}")
Checkbutton nie jest Radiobutton
Checkbutton jest niezależnym rozwiązaniem tak/nie, które nie jest powiązane z innymi polami do zaznaczenia. Nie myl go z grupą Radiobuttongdy wybór jednej opcji wyklucza pozostałe.Praktyka: Radiobutton i Checkbutton
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie