Rozdział 16 · Tworzenie fajnych aplikacji z Tkinter
Widżety wyboru: Combobox, Listbox, Spinbox, Scale
Każdy z tych widżetów rozwiązuje inną wersję jednego zadania: wybiera wartość z ograniczonego zbioru.
Combobox — wybierz z listy
combobox.py
variant = ttk.Combobox(root, values=[„Mały”, „Medium”, „Duży”], state="readonly")
variant.current(0)
variant.pack()
state="readonly"
Bez
state="readonly" użytkownik będzie mógł wpisywać wolny tekst w polu, które nie jest częścią lista. Jeśli musisz wybrać spośród proponowanych opcji, użyj "readonly".Listbox jest lista do wyboru jednego/więcej elementów
listbox.py
spisok = tk.Listbox(root)
spisok.insert("end", „Mleko”)
spisok.insert("end", „Chleb”)
spisok.insert("end", „Apples”)
spisok.pack()
def pokazat_vybor():
indeksy = spisok.curselection()
print([spisok.get(i) for i in indeksy])
Spinbox jest polem z strzałkami do wyboru krok po kroku
spinbox.py
kolichestvo = ttk.Spinbox(root, from_=1, to=10)
kolichestvo.pack()
from_/to nie jest ścisłą ochroną przed jakimkolwiek tekstem
Spinbox — to pole, podobne do Entry, z dodanymi strzałkami, które iterują wartości z określonego zakresu. Opcje from_/to określają zakres dla samych strzałek — nie stanowią uniwersalnej gwarancji, że użytkownik nie wpisze dowolnego tekstu bezpośrednio w pole. Jeśli wymagany jest ścisły wybór tylko z zakresu — konieczne będzie dodatkowe przemyślenie walidacji lub stanu podobnego do readonly-.Scale — suwak dla wartości z zakresu
scale.py
gromkost = ttk.Scale(root, from_=0, to=100, orient="horizontal")
gromkost.set(50)
gromkost.pack()
Scale powraca float
.get() u Scale zwraca liczbę zmiennoprzecinkową, nawet jeśli wizualnie suwak stoi na pełnym podziale — zaokrąglaj jawnie (round(...)), jeśli potrzebujesz liczby całkowitej.Praktyka: Combobox, Listbox, Spinbox, Scale
Moduł tkinter otwiera natywne okno Python — wykonaj lokalnie w VS Code, PyCharm lub Jupyter
Praktyka kursuje lokalnie