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

Trzy przełączniki: Herbata, Kawa (wybrana), Woda
Jedną z wybranych opcji z grupy jest cieniowane koło. Przykład wyglądu w środowisku kursu. Czcionki, rozmiary i motyw mogą się nieco różnić w zależności od systemu operacyjnego.
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()
# Оба переключателя можно выбрать ОДНОВРЕМЕННО —
# это уже не взаимоисключающий выбор, а два независимых флажка.
Co widać na ekranie

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

Dwa znaczniki: zdjęty i ustawiony
Dwa stany tego samego widżetu – niedokończone/zainstalowane. Przykład wyglądu w środowisku kursu. Czcionki, rozmiary i motyw mogą się nieznacznie różnić w zależności od twojego systemu operacyjnego.
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
Otwórz praktykę →