У Tkinter радіокнопки, з яких складаються перемикачі, є об’єктами класу Radiobutton, прапорці — об’єктами класу Checkbutton.
Елемент керування Радіокнопка (Radiobutton).
Перемикачі, що складаються з двох або більше радіокнопок (віджетів класу Radiobutton), використовують, коли потрібно вибрати один із декількох варіантів.
Радіокнопки в перемикачі взаємопов’язані, тобто у разі вибору іншої радіокнопки попередня вимикається.
З однієї групи перемикачів можна вибрати тільки один. Для цього перемикачі пов’язує спільна змінна. Назву цієї зміної зазначають в атрибуті variable кожної радіокнопки. Ця змінна є екземпляром класу IntVar і може набувати цілих значень.
Команда створення такої змінної має вигляд:
var = IntVar()
Щоб отримати значення змінної, слід викликати метод get(), а щоб його змінити, — метод set().
Якщо радіокнопку вибрано, спільна змінна отримує значення її атрибуту value, і навпаки, надавши спільній змінній певне значення, можна увімкнути радіокнопку з відповідним значенням value.
Команда створення об'єкта класу Radiobutton має синтаксис:
<ім'я перемикача> = Radiobutton(text = <текст підпису>, variable =<назва змінної>, value = <значення змінної>)
Отже, для створення перемикача потрібно:
1) створити змінну var класу IntVar для керування радіокнопками;
2) створити потрібну кількість об’єктів класу Radiobutton із різними значеннями властивості value;
3) занести в атрибут variable усіх об’єктів назву змінної var.
Отже, для створення перемикача потрібно:
1) створити змінну var класу IntVar для керування радіокнопками;
2) створити потрібну кількість об’єктів класу Radiobutton із різними значеннями властивості value;
3) занести в атрибут variable усіх об’єктів назву змінної var.
Приклад:
Створимо три радіокнопки із заголовками "red", "уellow", "green".
var = IntVar() # Змінна для зв’язку між радіокнопками
var.set(0) # Активуємо радіокнопку з value = 0
rbR = Radiobutton(text = "Червоний", variable = var, value = 0)
rbY = Radiobutton(text = "Жовтий", variable = var, value = 1)
rbG = Radiobutton(text = "Зелений", variable = var, value = 2)
rbR.pack(anchor = W)
rbY.pack(anchor = W)
rbG.pack(anchor = W)
var = IntVar() # Змінна для зв’язку між радіокнопками
var.set(0) # Активуємо радіокнопку з value = 0
rbR = Radiobutton(text = "Червоний", variable = var, value = 0)
rbY = Radiobutton(text = "Жовтий", variable = var, value = 1)
rbG = Radiobutton(text = "Зелений", variable = var, value = 2)
rbR.pack(anchor = W)
rbY.pack(anchor = W)
rbG.pack(anchor = W)
Рис.1
Під час запуску програми виявиться ввімкненою радіокнопка rbR, оскільки значення її атрибута value = 0 збігається з поточним значенням змінної var. Якщо вибрати радіокнопку rbY, то вона увімкнеться, а кнопка rbR вимкнеться, і змінна var набуде значення 1.
Щоб у відповідь на перемикання виконувалися певні дії, слід радіокнопки пов’язати з обробниками подій.
Приклад:
Пов’яжемо всі кнопки з функцією-обробником change(), у якій, залежно від того, яка з радіокнопок активна, змінюватимемо колір тла форми (рис. 1):
def change():
if var.get() == 0: root.config(bg = 'red')
elif var.get() == 1: root.config(bg = 'yellow')
elif var.get() == 2: root.config(bg = 'green')
def change():
if var.get() == 0: root.config(bg = 'red')
elif var.get() == 1: root.config(bg = 'yellow')
elif var.get() == 2: root.config(bg = 'green')
Джерела:
Інформатика : підруч. для 8 кл. закл. заг. серед.освіти / Йосиф Ривкінд [та ін.]. — Київ : Генеза, 2021.
Інформатика : підруч. для 8 кл. закл. заг. серед.освіти / О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов. — Х. : Вид-во «Ранок», 2021