Інформація про новину
  • Переглядів: 184
  • Дата: 6-10-2021, 18:39
6-10-2021, 18:39

53. Обробники подій, пов'язані з елементами керування в Python

Категорія: Інформатика





Попередня сторінка:  52. Властивості та методи елементів кер...
Наступна сторінка:   54. Уведення даних в програму на Python

53.1.

ПОДІЯ НАТИСКАННЯ НА КНОПКУ

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

Як було зазначено раніше, обробник події — це підпрограма, яка виконується, як реакція на подію. Подією може бути натиснення миші на об’єкт (кнопку, напис, зображення тощо), наведення миші, подвійне клацання на об’єкт тощо. Однією із найбільш розповсюджених подій є подія натискання на кнопку. Розглянемо, як запрограмувати дію кнопок, виконавши вправи 53.1 та 53.2.

ВПРАВА 53.1

Завдання. У вікні розташуйте 4 кнопки, що відповідають порам року Зима, Весна, Літо та Осінь. Ліворуч від кнопок розташуйте об’єкт напис сірого кольору з увігнутим рельєфом. При натисненні на відповідну кнопку в об’єкті напис мають з’являтися назви місяців, що відповідають натисненій порі року.

1. Уведіть команди імпорту модуля tkinter та створення графічного вікна із заголовком Пори року і з розмірами 300 на 250.

2. Додайте команди створення кнопок Зима, Весна, Літо та Осінь з назвами winter, spring, summer та autumn відповідно. Встановіть розмір шрифту 16 пунктів, а колір фону відповідно до зразка (рис. 53.1).

3. Додайте команди створення порожнього напису, що має назву Lbl. Для літер, що мають відображатися у цьому написі, встановіть розмір 16 пунктів, сірий колір фону, увігнутий рельєф напису.

4. Додайте команду mainloop().

5. Запустіть програму на виконання та переконайтеся, що елементи керування створено.

53.2.

ПОДІЯ НАТИСКАННЯ КНОПКИ

Розглянемо створення кодів обробника події на прикладі двох об’єктів: кнопки Зима, на яку необхідно натиснути (вона має ім’я winter) та напису Lbl, в якому відображаються назви місяців (рис. 53.2).

Для зміни тексту в написі ми маємо створити функцію, яка виконає зміну властивості text у написі Lbl. Для цього можна ввести наступний код:

Тут def — службове слово, що вказує на створення функції, winter_click — назва функції, Lbl — назва напису, 'text' — назва властивості. Напис у лапках — значення, що надається властивості. Символи \п застосовано для того, щоб назви місяців розпочиналися з нового рядка.

Зверніть увагу, що подія, яка має відбуватися у функції, записується з відступом.

Аби вказані у функції дії були виконані, її треба викликати. Здійснюється це в конструкторі кнопки, на яку буде натиснуто.

З даної команди видно, що в конструкторі кнопки winter дописано команду виклику функції command=winter_click, де winter_click — це назва функції обробника події.

Зверніть увагу, що коди функції необхідно записати до того, як її викликають.

На рис. 53.3 представлено загальні конструкції щойно розглянутих команд — запам’ятайте їх!

ВПРАВА 53.2

Завдання. Відкрийте файл, створений у вправі 53.1, та створіть обробники подій натискання кнопок.

1. Створіть код обробника події натискання на кнопку Зима.

2. В конструкторі кнопки Зима додайте команду виклику обробника події.

3. Запустіть програму на виконання та натисніть кнопку Зима. В результаті у написі мають з’явитися назви зимових місяців.

4. Самостійно додайте функції обробника події натискання на інші кнопки. Також додайте команди виклику даних функцій у відповідних конструкторах.

53.3.

ПРОГРАМУВАННЯ РІЗНИХ ПОДІЙ

Натискання миші на кнопці — це не єдина подія, що може відбуватися з об’єктами. Розглянемо програмування інших подій на прикладі програми «Словник», у якій події будуть відбуватися з написами.

ВПРАВА 53.3

Завдання. У графічному вікні розташуйте написи у два стовпчики відповідно до зразка (рис. 53.4). При запуску програми має завантажуватися вікно, що містить у першому стовпці слова на українській мові, у другому стовпці — слова приховані. При натисканні на українське слово має з’являтися його переклад англійською мовою. При подвійному натисканні на українське слово, англійське слово має зникати. 1

1. Уведіть команди імпорту модуля tkinter та створення графічного вікна із заголовком Словник та розмірами 300 на 200.

2. Уведіть команди створення написів, що містять українські слова. Встановіть для них відповідні написи, розмір шрифту 16, колір — світло-зелений.

3. Самостійно додайте команди створення порожніх написів для розташування слів англійською мовою. Встановіть для них розмір шрифту 16, колір фону — оранжевий, увігнутий рельєф контуру.

4. Додайте команду mainloop().

5. Запустіть програму на виконання та переконайтеся, що елементи керування створено.

Розглянемо створення кодів на прикладі двох об’єктів: напису Кіт, на який необхідно буде здійснювати натискання, що має назву Ua1, та напису Еп1, у якому має з’явитися слово Cat (рис. 53.5).

Для зміни тексту в написі ми маємо створити функцію, яка виконає зміну властивості text у написі Елі. Для цього можна ввести такий код:

Як вам уже відомо, def — службове слово, що вказує на створення функції, En1_show — назва функції. На відміну від обробника події, що ми створювали для натискання кнопки, тут для функції з’явився аргумент even, що є об’єктом події. Для виклику даної функції використовується метод bind(), який дозволяє викликати обробника події для будь-якого елемента керування. Програмний код виклику події буде таким:

Ua1 — це об’єкт, з яким відбувається дія, bind — метод виклику події, '<Button 1>' — це подія, в даному випадку вона визначає натискання лівої кнопки миші, En1_show — ім’я обробника події.

ВПРАВА 53.4

Завдання. Відкрийте файл, створений у вправі 53.3, та створіть обробники подій наведення на написи з українськими словами; подвійного клацання на написи з українськими словами.

1. Створіть код обробника події натискання на слово Кіт.

2. Додайте команду виклику події.

3. Запустіть програму на виконання та натисніть слово Кіт. У результаті навпроти має з’явитися напис Cat.

4. Додайте обробники подій наведення на інші написи з українськими словами. Також додайте команди їхнього виклику.

Для виконання події подвійного натискання на напис Ua1 створимо функцію:

У даному випадку функція має назву En1_hide, в результаті виконання події значення тексту в написі Еп1 має стати порожнім.

Для виклику даного обробника події скористаємося знову методом bind. Отже, уся команда матиме вигляд:

Тут '<Double-Button-l>' — подія подвійного клацання миші. Отже, даний код означає, що при виконанні події подвійного клацання миші на об’єкті Ua1 буде виконано обробник події En1_hide, а саме, прибирання тексту з напису.

5. Додайте код обробника події подвійного натискання на слово Кіт.

6. Додайте команду виклику цієї події.

7. Запустіть програму на виконання та натисніть слово Кіт. В результаті навпроти має з’явитися напис Cat. Клацніть на слові Кіт два рази — слово Cat має зникнути.

8. Самостійно додайте коди для виконання відповідних дій з іншими словами.

На рис. 53.6 представлено загальні конструкції щойно розглянутих команд — запам’ятайте їх!

У двох попередніх вправах ми розглянули використання двох подій — натискання та подвійне натискання на об’єкт мишею.

В таблиці 53.1 на с. 225 наведено ще деякі можливі події, що відбуваються з допомогою миші.

Таблиця 53.1. Події, що відбуваються з використанням миші

Подія

Опис

<Button-l>

натискання лівої кнопки миші

<Button-2>

натискання середньої кнопки миші

<Button-3>

натискання правої кнопки миші

<Double-Button-1>

подвійне натискання лівої кнопки миші

<Motion>

рух миші

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

1. Що необхідно для створення обробника події натискання кнопки?

2. Як викликати обробник події натискання кнопки?

3. Які обробники подій з використанням миші можна запрограмувати?

4. Як викликати обробник події з використанням миші?

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

1*. Чим відрізняється програмування обробника події натискання кнопки з обробниками виконання дій з іншими елементами керування?

2*. Як з допомогою обробника події можна змінити властивості кольору фону; шрифту?

Завдання для досліджень

1*. Знайдіть інформацію про створення обробників подій натискання клавіш на клавіатурі.

 

Це матеріал з підручника Інформатика 8 клас Казанцева, Стеценко (2021)

 



Попередня сторінка:  52. Властивості та методи елементів кер...
Наступна сторінка:   54. Уведення даних в програму на Python



^