Глава 16 · Создаём классные приложения с Tkinter

Виджеты выбора: Combobox, Listbox, Spinbox, Scale

Каждый из этих виджетов решает свой вариант одной задачи: выбрать значение из ограниченного множества.

Combobox — выбор из списка

Закрытый Combobox с выбранным значением «Маленький»
Закрытое состояние. Пример внешнего вида на среде курса. На вашей ОС шрифты, размеры и тема могут немного отличаться.
combobox.py
variant = ttk.Combobox(root, values=["Маленький", "Средний", "Большой"], state="readonly")
variant.current(0)
variant.pack()
Открытый выпадающий список Combobox с тремя вариантами
Открытое состояние (выпадающий список) — реальный скриншот, не имитация. Пример внешнего вида на среде курса. На вашей ОС шрифты, размеры и тема могут немного отличаться.
state="readonly"
Без state="readonly" пользователь сможет напечатать в поле произвольный текст, не входящий в список. Если нужен выбор именно из предложенных вариантов — используйте "readonly".

Listbox — список для выбора одного/нескольких элементов

Listbox с четырьмя элементами, «Хлеб» выделен
Один элемент выделен (виден по подсветке). Пример внешнего вида на среде курса. На вашей ОС шрифты, размеры и тема могут немного отличаться.
listbox.py
spisok = tk.Listbox(root)
spisok.insert("end", "Молоко")
spisok.insert("end", "Хлеб")
spisok.insert("end", "Яблоки")
spisok.pack()

def pokazat_vybor():
    indeksy = spisok.curselection()
    print([spisok.get(i) for i in indeksy])

Spinbox — поле со стрелками для пошагового выбора

Spinbox со значением 3 и стрелками вверх/вниз
Стрелки справа увеличивают/уменьшают значение по шагу. Пример внешнего вида на среде курса. На вашей ОС шрифты, размеры и тема могут немного отличаться.
spinbox.py
kolichestvo = ttk.Spinbox(root, from_=1, to=10)
kolichestvo.pack()
from_/to — не строгая защита от любого текста
Spinbox — это поле, похожее на Entry, с добавленными стрелками, которые пошагово перебирают значения из заданного диапазона. Параметры from_/to задают диапазон для самих стрелок — они не являются универсальной гарантией, что пользователь не введёт с клавиатуры произвольный текст напрямую в поле. Если нужен строгий выбор только из диапазона — потребуется дополнительно продумать валидацию или readonly-подобное состояние.

Scale — ползунок для значения из диапазона

Scale — горизонтальный ползунок со значением 50 в метке рядом
Ползунок (track) и бегунок (thumb); значение показано в соседней метке. Пример внешнего вида на среде курса. На вашей ОС шрифты, размеры и тема могут немного отличаться.
scale.py
gromkost = ttk.Scale(root, from_=0, to=100, orient="horizontal")
gromkost.set(50)
gromkost.pack()
Scale возвращает float
.get() у Scale возвращает число с плавающей точкой, даже если визуально ползунок стоит на целом делении — округляйте явно (round(...)), если нужно целое число.
Практика: Combobox, Listbox, Spinbox, Scale
Модуль tkinter открывает нативное окно Python — выполните локально в VS Code, PyCharm или Jupyter
Практика выполняется локально
Открыть практику →