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

Zamknięty Combobox z wybraną wartością „Mały”
Stan zamknięty. Przykład wyglądu w środowisku kursu. Czcionki, rozmiary i motywy mogą się nieco różnić w zależności od twojego systemu operacyjnego.
combobox.py
variant = ttk.Combobox(root, values=[„Mały”, „Medium”, „Duży”], state="readonly")
variant.current(0)
variant.pack()
Otwarty rozwijany lista Combobox z trzema opcjami
Open State (rozwijane lista) to prawdziwy zrzut ekranu, a nie symulacja. Przykład pojawienia się w środowisku kursu. Na twoim systemie operacyjnym czcionki, rozmiary i motywy mogą się nieco różnić.
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 z czterema elementami podkreślono „Chleb”
Jeden element jest podświetlony (widoczny przez podkreślenie). Przykład wyglądu w środowisku kursu. Czcionki, rozmiary i motywy mogą się nieco różnić w zależności od systemu operacyjnego.
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 z wartością 3 i strzałkami w górę/dół
Strzałki po prawej zwiększają/zmniejszają wartość krokami. Przykład wyglądu w środowisku kursu. Na twoim systemie operacyjnym czcionki, rozmiary i motyw mogą się nieco różnić.
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 jest poziomym suwakiem z wartością 50 na oznaczce obok
Suwak (track) i pokrętło (thumb); wartość pokazana w sąsiedniej etykiecie. Przykład wyglądu w środowisku kursu. Na twoim systemie operacyjnym czcionki, rozmiary i motyw mogą się nieco różnić.
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
Otwórz praktykę →