Елементи вибору: прапорці, перемикачі
Нова українська школа
Урок 46
Інформатика 8
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Елементи вибору
Вам, напевно, доводилось робити вибір певних значень із числа запропонованих у діалоговому вікні за допомогою таких елементів керування, як перемикачі та прапорці.
прапорець
радіокнопка
перемикач
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елементи вибору
У Tkinter
Далі розгляньмо алгоритми створення та програмування елементів вибору.
перемикачі складаються з об’єктів класу
прапорці є об’єктами класу
Radiobutton
Checkbutton
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Перемикачі, що складаються з двох або більше радіокнопок (віджетів класу Radiobutton), використовують, коли потрібно вибрати один із декількох варіантів.
У разі вибору іншої радіокнопки попередня вимикається.
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Перемикачі корисні, коли важливо уникнути вибору декількох значень одночасно. Наприклад, вибір способу оплати:
Або вибір рівня складності гри:
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Зв’язок між радіокнопками перемикача встановлюється через спільну змінну.
Її назву зазначають в атрибуті variable кожної з радіокнопок. Ця змінна має бути екземпляром спеціального класу IntVar, описаного у Tkinter, і може набувати, відповідно, цілих значень.
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Щоб отримати значення змінної,
слід викликати метод:
Якщо радіокнопку вибрано, спільна змінна отримує значення її атрибута value, і навпаки — надавши їй певного значення, можна увімкнути радіокнопку з відповідним значенням value.
get()
щоб змінити значення змінної,
слід викликати метод:
set()
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Отже, для створення перемикача потрібно:
var = IntVar()
rbR = Radiobutton(text = "1", value = 0)
rbR = Radiobutton(text = "1", variable = var, value = 0)
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Створимо перемикач для вибору одного з трьох кольорів:
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)
Параметр anchor поміщає віджет у певній частині контейнера. Щоб вирівняти радіокнопки за лівим краєм, слід надати параметру значення W (West (захід) — ліва сторона).
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Під час запуску програми виявиться ввімкненою радіокнопка rbR, бо значення її атрибута value = 0 збігається з поточним значенням змінної var. Якщо вибрати радіокнопку rbY, то вона увімкнеться, а кнопка rbR вимкнеться, і змінна var набуде значення 1.
Щоб у відповідь на перемикання виконувалися певні дії, потрібно пов'язати радіокнопки з обробниками подій.
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Пов’яжемо всі кнопки з функцією — обробником change(), так само, як ми це робили для кнопок (Button). В обробнику, залежно від того, яка з радіокнопок активна, змінюватимемо колір тла форми:
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')
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Радіокнопка (Radiobutton)
Розробимо програму Конструктор піц, яка при замовленні дає змогу користувачеві вибирати розмір піци:
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Прапорець (Checkbutton)
Прапорець — об’єкт класу Checkbutton — використовують в програмі для того, щоб вмикати або вимикати певний параметр.
Тобто для візуалізації станів увімкнено/вимкнено, коли серед параметрів необхідно вибрати потрібні. Прапорці можна також розташувати групою, але кожна позначка в такій групі встановлюється або знімається незалежно від стану інших прапорців.
Тобто в групі можна одночасно встановити декілька позначок.
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Прапорець (Checkbutton)
Кожний об’єкт класу Checkbutton повинен мати свою змінну типу BooleanVar():
cb_var = IntVar()
cb_var.set(0)
За значенням цієї змінної, пов’язаної з об’єктом Checkbutton, можна визначити стан об’єкта (чи встановлено прапорець).
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Прапорець (Checkbutton)
Об’єкт cb класу Checkbutton створюється такою командою:
сb = Checkbutton(text = "<напис>", variable = cb_var,
onvalue = 1, offvalue = 0)
За встановленого прапорця пов’язана з ним змінна набуває значення
а якщо зняти прапорець, то пов’язана з ним змінна набуває значення
onvalue
offvalue
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Прапорець (Checkbutton)
if cb_var.get() != 0:
<активізація параметрів>
Для перевірки стану прапорця та активізації пов’язаних із ним параметрів слід отримати значення змінної:
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Прапорець (Checkbutton)
Додамо до програми Конструктор піц можливість вибирати склад піци. Додамо перед рядком із викликом конструктора Button() команди для створення та налаштування прапорців:
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Елемент керування Прапорець (Checkbutton)
Змінимо код обробника btn_click(), щоб під час розрахунку враховувався стан прапорців:
def btn_click():
suma = var.get()*(60+cvar1.get()*8+cvar2.get()*18
+cvar3.get()*39)
lab2.config(text = 'Вартість: ' +str(suma)+ ' грн')
Віджети Radiobutton і Checkbutton підтримують більшість атрибутів зовнішнього вигляду, які є в інших елементів графічного інтерфейсу.
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Питання для самоперевірки
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Розгадайте ребус
Перемикач
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Розгадайте ребус
Прапорець
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Домашнє завдання
Проаналізувати
с. 217-222
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Працюємо за комп’ютером
Сторінка
221-222
Розділ 5
§ 34
© Вивчаємо інформатику teach-inf.com.ua
Успіхів�у навчанні!
Нова українська школа
Урок 46
Інформатика 8
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.