1. Чекбокси Checkbutton
Чекбокс — це квадратна кнопка, яку можна або встановити, або зняти. Він корисний, коли потрібно надати користувачу вибір одного або кількох параметрів з запропонованих.
Створення чекбоксу
Для створення чекбоксу використовують віджет Checkbutton. Щоб відстежувати стан чекбоксу (відмічений чи ні), зазвичай використовується змінна типу IntVar, яка зберігає значення 1, якщо чекбокс встановлений, і 0, якщо він знятий.
import tkinter as tk
# Функція для перевірки стану чекбоксу
def show_status():
print("Увімкнений" if var.get() == 1 else "Вимкнений")
# Створення вікна
root = tk.Tk()
root.title("Приклад із чекбоксом")
# Змінна для зберігання стану
var = tk.IntVar()
# Чекбокс із прив'язкою до змінної var
checkbox = tk.Checkbutton(root, text="Увімкнути опцію", variable=var, command=show_status)
checkbox.pack(pady=20)
root.mainloop()
Пояснення коду
-
variable=var: Прив'язує чекбокс до змінноїvar, яка оновлюється при кожній зміні стану чекбоксу. - Функція
show_status(): Виводить у консоль поточний стан чекбоксу. Якщо чекбокс відмічений, виводиться "Увімкнений", якщо ні — "Вимкнений".
Використання декількох чекбоксів
Якщо потрібно кілька незалежних опцій, можна створити декілька чекбоксів, кожен з яких прив'язаний до своєї змінної.
# Змінні для зберігання стану
option1 = tk.IntVar()
option2 = tk.IntVar()
# Чекбокси
check1 = tk.Checkbutton(root, text="Опція 1", variable=option1)
check2 = tk.Checkbutton(root, text="Опція 2", variable=option2)
check1.pack()
check2.pack()
2. Радіокнопки Radiobutton
Радіокнопки — це набір круглих кнопок, з яких користувач може вибрати лише одну. Вони корисні, коли потрібно запропонувати користувачу вибрати один варіант з кількох.
Створення радіокнопок
Для створення радіокнопок використовується віджет Radiobutton. Щоб зв'язати радіокнопки і зробити їх вибір взаємозалежним, всі вони мають бути прив'язані до однієї змінної (IntVar або StringVar).
# Функція для відображення обраного варіанту
def show_choice():
print(f"Обраний варіант {choice.get()}")
# Змінна для відстеження вибору
choice = tk.IntVar()
# Радіокнопки
radio1 = tk.Radiobutton(root, text="Варіант 1", variable=choice, value=1, command=show_choice)
radio2 = tk.Radiobutton(root, text="Варіант 2", variable=choice, value=2, command=show_choice)
radio3 = tk.Radiobutton(root, text="Варіант 3", variable=choice, value=3, command=show_choice)
radio1.pack()
radio2.pack()
radio3.pack()
Пояснення коду
-
variable=choice: Прив'язує усі радіокнопки до однієї змінноїchoice, щоб зробити їх взаємозалежними. -
value: Визначає значення, яке прийме зміннаchoice, якщо користувач вибере цю радіокнопку. - Функція
show_choice(): Показує у консолі обраний варіант.
Радіокнопки з текстовими значеннями
Можна також прив'язати радіокнопки до змінної типу StringVar, щоб використовувати текстові значення.
# Змінна для вибору тексту
color_choice = tk.StringVar()
# Радіокнопки з текстовими значеннями
radio_red = tk.Radiobutton(root, text="Червоний", variable=color_choice, value="Red")
radio_blue = tk.Radiobutton(root, text="Синій", variable=color_choice, value="Blue")
radio_green = tk.Radiobutton(root, text="Зелений", variable=color_choice, value="Green")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
3. Перемикачі Spinbox
Перемикачі дозволяють користувачу вибрати числове значення з діапазону. Цей віджет корисний для введення числових даних, таких як вік або кількість.
Створення перемикача
У Tkinter перемикач створюється за допомогою віджету Spinbox, який дозволяє користувачу вводити значення вручну або обирати його за допомогою стрілок.
# Функція для відображення обраного значення
def show_spin_value():
print(f"Значення: {spin.get()}")
# Перемикач від 1 до 10
spin = tk.Spinbox(root, from_=1, to=10, command=show_spin_value)
spin.pack(pady=20)
Пояснення коду
from_таto: Визначають діапазон значень для перемикача.- Функція
show_spin_value(): Виводить обране значення у консоль при кожній зміні.
Налаштування кроку і значень
Параметр increment дозволяє задати крок перемикача, а values дозволяє вказати конкретні значення.
# Перемикач зі значеннями через 2
spin_step = tk.Spinbox(root, from_=0, to=20, increment=2)
spin_step.pack(pady=5)
# Перемикач із заданими значеннями
spin_values = tk.Spinbox(root, values=("Маленький", "Середній", "Великий"))
spin_values.pack(pady=5)
4. Приклад застосунку
Приклад застосунку з чекбоксами, радіокнопками і перемикачами
Тепер зберемо все разом і створимо інтерфейс з чекбоксами, радіокнопками і перемикачами, який дозволяє користувачу обрати кілька опцій і переглянути результат.
import tkinter as tk
# Створення головного вікна
root = tk.Tk()
root.title("Приклад з чекбоксами, радіокнопками і перемикачами")
root.geometry("300x300")
# Функції для відображення вибраних значень
def show_selections():
selections = []
selections.append(f"Чекбокс встановлено: {'Так' if option.get() == 1 else 'Ні'}")
selections.append(f"Обраний колір: {color_choice.get()}")
selections.append(f"Кількість: {spin.get()}")
message_label.config(text="\n".join(selections))
# Чекбокс
option = tk.IntVar()
checkbox = tk.Checkbutton(root, text="Увімкнути опцію", variable=option)
checkbox.pack(pady=5)
# Радіокнопки
color_choice = tk.StringVar(value="Червоний")
tk.Label(root, text="Обріть колір:").pack()
radio_red = tk.Radiobutton(root, text="Червоний", variable=color_choice, value="Червоний")
radio_blue = tk.Radiobutton(root, text="Синій", variable=color_choice, value="Синій")
radio_green = tk.Radiobutton(root, text="Зелений", variable=color_choice, value="Зелений")
radio_red.pack()
radio_blue.pack()
radio_green.pack()
# Перемикач
tk.Label(root, text="Кількість:").pack()
spin = tk.Spinbox(root, from_=1, to=10)
spin.pack(pady=5)
# Кнопка для виводу вибраних значень
show_button = tk.Button(root, text="Показати вибір", command=show_selections)
show_button.pack(pady=10)
# Мітка для відображення результатів
message_label = tk.Label(root, text="", justify="left")
message_label.pack(pady=5)
root.mainloop()
Пояснення повного прикладу
- Чекбокс: Відзначає стан "Увімкнути опцію".
- Радіокнопки: Дозволяють обрати один з трьох кольорів.
- Перемикач: Дозволяє обрати кількість від 1 до 10.
- Кнопка "Показати вибір": Виводить поточні стани всіх віджетів у мітку
message_label.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ