Лекція 14. Перемикачі та прапорці

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

14.1 Перемикачі 

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

Але їх створити трішки складніше, ніж будь-який об’єкт, який ми створювали раніше. Просто перемикач – це не єдиний об’єкт, а група об’єктів, тому спочатку створюється група перемикачів, а потім самі перемикачі за допомогою функції Radiobutton():

ім’я_групи_перемикачів=IntVar()

назва_перемикача1=Radiobutton(назва_вікна, text=“Текст перемикача1”,

variable=ім’я_групи_перемикачів, value=значення_перемикача1)

назва_перемикача2=Radiobutton(назва_вікна, text=“Текст перемикача2″,

variable=ім’я_групи_перемикачів, value=значення_перемикача2)

value – значення перемикача, яке буде набувати група перемикачів в залежності від вибору користувача. Зазвичай значення перемикача – це натуральні числа, починаючи від 1, хоча ви можете встановити і інші. Та головне щоб для всіх перемикачів вони були різними.

Переходимо далі, і як ви вже зрозуміли ім’я групи перемикачів – це цілочисельна (IntVar) змінна із результатом вибору користувача програми. Та для того, щоб отримати значення, яке набула група перемикачів потрібно застосувати метод get(), з яким ми вже знайомі.

Нехай, ми маємо групу перемикачів grupa1, перший перемикач має значення 1, а другий – 2. Отже, якщо користувач вибере перший перемикач, то grupa1.get() буде мати значення.

Аргументи variable, value та text є обов’язковими, без них перемикачі не будуть представляти із себе нічого. Але є й необов’язкові атрибути:

  • bg=колір – колір фону;
  • fg=колір – колір тексту;
  • font=шрифт та розмір шрифту – шрифт тексту кнопки.

I звичайно, кожен перемикач потрібно розмістити за допомогою методу place(). Але це ми вже робити вміємо.

Для прикладу створимо вікно із розмірами 400х400, та створимо в нього групу перемикачів, а саме три перемикачі із варіантами кольорів (жовтий, рожевий та світло зелений). І перший розмістимо в 100 пікселях від лівого краю та в 200 пікселях від верхнього краю, а кожен наступний на 20 пікселів нижче. Програмний код буде виглядати так:

При запуску вікно буде виглядати так (мал. 28). Як ми бачимо, з самого початку жоден перемикач не вибраний, якщо ж ми хочемо, щоб на початку був одразу вибраний один із перемикачів, нам потрібно розмістити після оголошення змінної групи перемикачів наступну конструкцію:       

ім’я_групи_перемикачів.set(значення_перемикача)

Примітка. Метод get(), з яким ми вже a працювали призначений для одержання значення різних об’єктів, а метод set() для встановлення значення.

Тобто, якщо ми маємо групу перемикачів perem, та два перемикача із значеннями 1 та 2, і ми хочемо аби одразу був вибраний перший перемикач, ми застосуємо наступний рядок коду:

perem.set(1)

Ну і тепер створимо динамічну програму, яка буде, при натисканні на праву клавішу миші по області вікна, виводити вікно повідомлення з заголовком “Ваш вибір” та з варіантом, який обрав користувач. Створимо нову подію та функцію. Але перемикачі та прапорці працюють не так, як текстове поле, тому ми зможемо отримати лише номер вибраного перемикача, а отже будемо користуватися розгалуженням:

Зверніть увагу! Для більш зручного виведення інформації створено додаткову змінну pov. pov– змінна, яка містить повідомлення для виведення, і в залежності від вибору користувача, значення цієї змінної буде змінюватися.

Запустимо нашу програму та поспостерігаємо за її виконанням (мал. 29).

14.2 Прапорці

Що стосується прапорців, то ці елементи управління не об’єднуються в групи, тому, що активних прапорців може бути не обмежена кількість. Прапорці слугують для вибору декількох варіантів і тому кожен прапорець має свою окрему змінну із значенням.

Для створення прапорців призначена функція Checkbutton(), і застосовується вона так:

назва_змінної=IntVar()

ім’я_прапорця=Checkbutton(назва_вікна, text=“Текст прапорця”,

variable=назва+змінноїonvalue=значення_коли_прапорець_ввімкнутий,

offvalue=значення_коли_прапорець_вимкнутий)

Примітка! Зазвичай в якості значення прапорця встановлюють 1 та 0 (в активному та неактивному стані), але вибір все одно залишається за вами.

Ну і для прикладу візьмемо вікно з розмірами 500×500 пікселів та створимо напис із початковим текстом “Не вибрано”. Також створимо чотири прапорці (перші два із варіантами кольорів та інші двоє із варіантами типів фарб). В залежності від нашого вибору текст напису буде змінюватися (у якості прикладу розглянемо лише 2 комбінації), Щоб реалізувати зміну тексту напису створимо подію Button-1 для напису. Ось що ми маємо:

Зверніть увагу! Ми не повинні забувати, що для того, щоб отримати  значення прапорця ми повинні користуватися методом get().

Отже запустимо нашу програму та поспостерігаємо за її виконанням та результатом (мал. 30).

Контрольні питання

1. Що представляють собою прапорці та перемикачі?

2. Як називаються функції для створення прапорців і перемикачів?

3. Чому для створення перемикачів та прапорців потрібно створювати додаткові змінні?

4. Що означає IntVar?

5. Для чого слугує метод set?

Практичні завдання

1. Вдосконалити останній приклад, додавши до програми всі можливі комбінації вибору.

2. Створіть новий файл Python та нове вікно із заголовком “Магазин морозива”. Створіть дві групи перемикачів. Над першою групою створіть напис “Оберіть тип морозива”. В першій групі буде три перемикачі із типами морозива: ванільне, шоколадне, фруктове. Над другою групою створіть напис “Оберіть розмір ріжку”. В цій групі буде також три перемикачі із розмірами ріжку: маленький, середній та великий. В залежності від вибору користувача на екран буде виводитися відповідне вікно з повідомленням. Наприклад, якщо користувач вибере фруктове морозиво у маленькому ріжку, то на екран виведеться вікно з повідомленням “Ви вибрали фруктове морозиво у маленькому ріжку”.

3. Створіть новий файл Python та нове вікно із заголовком “Магазин морозива 2”. Створіть групу перемикачів. Над першою групою створіть напис “Оберіть тип морозива”. В групі буде три перемикачі із типами морозива: ванільне, шоколадне, фруктове. Поруч створити два прапорці із типами присипки: шоколадна присипка, кокосова стружка. Також над ними напис “Оберіть тип присипки”. В залежності від вибору користувача буде виводитися вікно повідомлення із вибором користувача. Примітка. Розглянути всі можливі випадки.