1 of 24

Елементи вибору: прапорці, перемикачі

Нова українська школа

Урок 46

Інформатика 8

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.

2 of 24

Елементи вибору

Вам, напевно, доводилось робити вибір певних значень із числа запропонованих у діалоговому вікні за допомогою таких елементів керування, як перемикачі та прапорці.

прапорець

радіокнопка

перемикач

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

3 of 24

Елементи вибору

У Tkinter

Далі розгляньмо алгоритми створення та програмування елементів вибору.

перемикачі складаються з об’єктів класу

прапорці є об’єктами класу

Radiobutton

Checkbutton

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

4 of 24

Елемент керування Радіокнопка (Radiobutton)

Перемикачі, що складаються з двох або більше радіокнопок (віджетів класу Radiobutton), використовують, коли потрібно вибрати один із декількох варіантів.

У разі вибору іншої радіокнопки попередня вимикається.

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

5 of 24

Елемент керування Радіокнопка (Radiobutton)

Перемикачі корисні, коли важливо уникнути вибору декількох значень одночасно. Наприклад, вибір способу оплати:

  • "Кредитна картка",
  • "Готівка",

Або вибір рівня складності гри:

  • "Легкий",
  • "Середній",
  • "Складний".

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

6 of 24

Елемент керування Радіокнопка (Radiobutton)

Зв’язок між радіокнопками перемикача встановлюється через спільну змінну.

Її назву зазначають в атрибуті variable кожної з радіокнопок. Ця змінна має бути екземпляром спеціального класу IntVar, описаного у Tkinter, і може набувати, відповідно, цілих значень.

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

7 of 24

Елемент керування Радіокнопка (Radiobutton)

Щоб отримати значення змінної,

слід викликати метод:

Якщо радіокнопку вибрано, спільна змінна отримує значення її атрибута value, і навпаки — надавши їй певного значення, можна увімкнути радіокнопку з відповідним значенням value.

get()

щоб змінити значення змінної,

слід викликати метод:

set()

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

8 of 24

Елемент керування Радіокнопка (Radiobutton)

Отже, для створення перемикача потрібно:

  1. створити змінну var класу IntVar для керування станом перемикача;
  1. створити потрібну кількість об’єктів класу Radiobutton із різними значеннями властивості value;
  1. занести в атрибут variable усіх радіокнопок назву змінної var.

var = IntVar()

rbR = Radiobutton(text = "1", value = 0)

rbR = Radiobutton(text = "1", variable = var, value = 0)

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

9 of 24

Елемент керування Радіокнопка (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

10 of 24

Елемент керування Радіокнопка (Radiobutton)

Під час запуску програми виявиться ввімкненою радіокнопка rbR, бо значення її атрибута value = 0 збігається з поточним значенням змінної var. Якщо вибрати радіокнопку rbY, то вона увімкнеться, а кнопка rbR вимкнеться, і змінна var набуде значення 1.

Щоб у відповідь на перемикання виконувалися певні дії, потрібно пов'язати радіокнопки з обробниками подій.

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

11 of 24

Елемент керування Радіокнопка (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

12 of 24

Елемент керування Радіокнопка (Radiobutton)

Розробимо програму Конструктор піц, яка при замовленні дає змогу користувачеві вибирати розмір піци:

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

13 of 24

Елемент керування Прапорець (Checkbutton)

Прапорець — об’єкт класу Checkbutton — використовують в програмі для того, щоб вмикати або вимикати певний параметр.

Тобто для візуалізації станів увімкнено/вимкнено, коли серед параметрів необхідно вибрати потрібні. Прапорці можна також розташувати групою, але кожна позначка в такій групі встановлюється або знімається незалежно від стану інших прапорців.

Тобто в групі можна одночасно встановити декілька позначок.

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

14 of 24

Елемент керування Прапорець (Checkbutton)

Кожний об’єкт класу Checkbutton повинен мати свою змінну типу BooleanVar():

cb_var = IntVar()

cb_var.set(0)

За значенням цієї змінної, пов’язаної з об’єктом Checkbutton, можна визначити стан об’єкта (чи встановлено прапорець).

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

15 of 24

Елемент керування Прапорець (Checkbutton)

Об’єкт cb класу Checkbutton створюється такою командою:

сb = Checkbutton(text = "<напис>", variable = cb_var,

onvalue = 1, offvalue = 0)

За встановленого прапорця пов’язана з ним змінна набуває значення

а якщо зняти прапорець, то пов’язана з ним змінна набуває значення

onvalue

offvalue

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

16 of 24

Елемент керування Прапорець (Checkbutton)

if cb_var.get() != 0:

<активізація параметрів>

Для перевірки стану прапорця та активізації пов’язаних із ним параметрів слід отримати значення змінної:

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

17 of 24

Елемент керування Прапорець (Checkbutton)

Додамо до програми Конструктор піц можливість вибирати склад піци. Додамо перед рядком із викликом конструктора Button() команди для створення та налаштування прапорців:

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

18 of 24

Елемент керування Прапорець (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

19 of 24

Питання для самоперевірки

  1. У яких випадках використовують компонент Radiobutton?
  1. Що забезпечує використання компонента Checkbutton?
  1. Як створити зв’язок між радіокнопками?
  1. Назвіть три відмінності між об’єктами класу Radiobutton та об’єктами класу Checkbutton.
  1. Як організувати перевірку стану прапорця?

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

20 of 24

Розгадайте ребус

Перемикач

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

21 of 24

Розгадайте ребус

Прапорець

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

22 of 24

Домашнє завдання

Проаналізувати

с. 217-222

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

23 of 24

Працюємо за комп’ютером

Сторінка

221-222

Розділ 5

§ 34

© Вивчаємо інформатику teach-inf.com.ua

24 of 24

Успіхів�у навчанні!

Нова українська школа

Урок 46

Інформатика 8

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.