1 of 26

Обробники подій, пов’язаних з елементами керування

За навчальною програмою 2017 року

Урок 42

8

teach-inf.com.ua

2 of 26

Запитання

Розділ 6 § 6.1

  1. Яке призначення програми-компілятора? Які основні етапи її роботи?
  1. Як створити вікно проєкту та задати значення його властивостей?
  1. Яке призначення програми-інтерпретатора? Які основні етапи її роботи?

8

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

3 of 26

Події та їх обробники

Розділ 6 § 6.2

Під час виконання проєкту з об’єктами можуть відбуватися події. Так, наприклад, з вікном можуть відбуватися такі події:

вибір будь-якої точки вікна;

Click

закривання вікна;

Close

створення (відкриття) вікна;

Create

переміщення вказівника у вікні виконання проєкту та ін.

Mouse

Move

установлення вказівника в довільну точку вікна і подвійне клацання лівої кнопки миші;

DblClick

8

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

4 of 26

Події та їх обробники

Розділ 6 § 6.2

Події можуть відбуватися з клавіатурою. Такою подією, наприклад, може бути подія KeyPress (англ. key press – натиснення клавіші) – натиснення будь-якої клавіші на клавіатурі.

Події можуть відбуватися й з іншими об’єктами:

кнопка

напис

поле та ін.

Ми їх вивчатимемо в наступних пунктах.

8

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

5 of 26

Події та їх обробники

Розділ 6 § 6.2

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

Фрагмент проєкту, який пов’язаний з певним об’єктом, називається методом цього об’єкта.

8

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

6 of 26

Події та їх обробники

Розділ 6 § 6.2

У мові Python обробник події для вікна створюють як окрему підпрограму та пов'язують її з вікном, використовуючи метод bind (англ. bind - в'язати, пов'язувати).

Підпрограма – це окремо виділена частина проєкту, яка має своє ім'я та яку можна за цим іменем запустити на виконання.

8

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

7 of 26

Події та їх обробники

Розділ 6 § 6.2

У Python розрізняють підпрограми двох видів:

процедури

функції

підпрограма, результатом виконання якої є створення компонента (вікна, кнопки та ін.) або змінення значень властивостей існуючого, виведення певного тексту, створення зображення тощо. Зазвичай обробники подій є процедурами.

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

8

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

8 of 26

Події та їх обробники

Розділ 6 § 6.2

Метод – це процедура або функція, що пов'язана з певним об'єктом.

У загальному вигляді команда пов'язування обробника події з вікном, що має ім’я root, має такий вигляд:

root.bind('<подія>', <ім’я_обробника_події>)

8

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

9 of 26

Події та їх обробники

Розділ 6 § 6.2

Позначення в мові Python деяких подій, які можуть відбутися з вікном.

Позначення подій у мові Python

Подія

Позначення в мові Python

Click – клацання лівої кнопки миші

<Button-1> або <1>

DblClick – подвійне клацання лівої кнопки миші

<Double-Button-1> або <Double-1>

MouseMove – рух вказівника по вікну

<Motion> (англ, motion - рух)

8

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

10 of 26

Події та їх обробники

Розділ 6 § 6.2

(Продовження…)

KeyPress – натискання будь-якої клавіші на клавіатурі

<KeyPress>

Create – створення вікна

<Expose> (англ, expose – розкривати)

Close – закривання вікна

<FocusOut> (англ, focus out – вихід фокуса)

Позначення подій у мові Python

Подія

Позначення в мові Python

8

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

11 of 26

Події та їх обробники

Розділ 6 § 6.2

Наприклад, якщо обробнику події Click (клацання лівої кнопки миші) надати ім’я click, то команда пов’язування цієї процедури з вікном з іменем root має такий вигляд:

Загальний вигляд обробника події такий:

root.bind('<1>', click)

def <ім’я_обробника_події> (event):

<команди, які будуть виконуватися під час настання події>

Рядок заголовка

8

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

12 of 26

Події та їх обробники

Розділ 6 § 6.2

Наприклад, для обробника події з іменем click рядок заголовка буде таким:

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

def click (event):

root ['bg'] = 'green'

Відступ утворюється автоматично, якщо після символа «:» натиснути клавішу Enter, або його можна зробити самостійно, натиснувши один раз клавішу Tab.

8

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

13 of 26

Події та їх обробники

Розділ 6 § 6.2

Якщо потрібно, щоб у результаті настання події змінилися значення певних властивостей вікна, обробник події повинен містити команди змінення значень цих властивостей. Це можуть бути команди застосування до вікна деяких методів, наприклад:

geometry()

title()

команда присвоювання

Загальний вигляд команди присвоювання такий:

<ім’я об’єкта>['<властивість>'] = «значення»

Знак присвоювання

8

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

14 of 26

Події та їх обробники

Розділ 6 § 6.2

Наприклад, виконання команди присвоювання:

root ['bg'] = 'green'

Установить зелений колір вікна з іменем root. Застосувавши метод:

Можна вивести вказаний у лапках текст у рядку заголовка вікна.

root.title('Змінення значень властивостей вікна')

8

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

15 of 26

Події та їх обробники

Розділ 6 § 6.2

А для того щоб розміри вікна стали 400 х 200 пікселів, відстань від лівої межі екрана – 500 пікселів, від верхньої – 70 пікселів, потрібно застосувати метод

root.geometry('400x200+500+70')

8

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

16 of 26

Події та їх обробники

Розділ 6 § 6.2

Обробник події записують перед його використанням, найчастіше на початку тексту проєкту. Запис команд після обробника події повинен розпочинатися від лівої межі вікна. Для переміщення курсора в цю позицію потрібно використати клавішу Backspace. Так, після обробника події слід записати команди створення вікна та пов'язування з ним обробника події:

root = Tk()

root.bind('<1>', click)

8

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

17 of 26

Події та їх обробники

Розділ 6 § 6.2

На малюнку наведено приклад процедури click – обробника події Click для вікна, що складається з вищеописаних команд, під час виконання якої зміняться значення властивості bg, текст заголовка, розміри і положення вікна, і результат її виконання.

8

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

18 of 26

Події та їх обробники

Розділ 6 § 6.2

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

Наприклад, потрібно, щоб після клацання лівої кнопки миші вікно опустилося на 50 пікселів, тобто слід збільшити відстань вікна від верхньої межі екрана на 50 пікселів.

У такому разі треба отримати поточне значення відстані, змінити його на 50 і запам’ятати результат в окремій змінній, щоб установити нове положення вікна.

8

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

19 of 26

Події та їх обробники

Розділ 6 § 6.2

Для отримання поточних значень розмірів і положення вікна використовують такі методи вікна:

(англ. window information - інформація про вікно) ширина вікна;

winfo_width()

висота вікна;

winfo_height()

відстань лівої межі вікна від лівого краю екрана;

winfo_x()

відстань верхньої межі вікна від верхнього краю екрана.

winfo_y()

8

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

20 of 26

Події та їх обробники

Розділ 6 § 6.2

Наприклад, щоб дізнатися поточну відстань вікна з іменем root від верхньої межі екрана та збільшити її на 50, потрібно виконати команду:

Щоб установити нове значення, потрібно в рядок визначення положення та розмірів вікна методу geometry() замість числа підставити значення змінної. Для цього на місці, де потрібно вставити значення змінної, увести символи {} і до рядка застосувати метод підстановки format() з іменем змінної, відокремивши його крапкою:

t = root.winfo_y() + 50

root.geometry('300x200+500+{}'.format(t))

8

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

21 of 26

Події та їх обробники

Розділ 6 § 6.2

Якщо потрібно підставити в рядок значення кількох змінних, то на всіх відповідних місцях потрібно ввести символи {}, а у методі format() перерахувати імена змінних через кому.

8

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

22 of 26

Події та їх обробники

Розділ 6 § 6.2

Наприклад, для того щоб після настання події клацання лівої кнопки миші вікно опустилося на 50 пікселів униз, а його ширина збільшилася на 40 пікселів, можна виконати проєкт:

8

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

23 of 26

Події та їх обробники

Розділ 6 § 6.2

Після запуску про’кту на виконання потрібно дочекатися відкриття вікна і вибрати будь-яку його точку. Тим самим відбудеться подія Click для вікна та буде виконана процедура – обробник події, результатом виконання якої буде змінення положення та розмірів вікна.

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

8

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

24 of 26

Дайте відповіді на запитання

  1. Які події можуть відбуватися з вікном?

Розділ 6 § 6.2

  1. Що називають обробником події?
  1. Як пов'язати з подією її обробник?
  1. Що називають методом об'єкта?
  1. Що називають процедурою?
  1. Як оформити обробник події в Python?
  1. Якими командами можна змінити значення властивостей об'єкта? Який їх загальний вигляд? Наведіть приклади таких команд.

8

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

25 of 26

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

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

§ 6.2, ст. 160-165

Розділ 6 § 6.2

8

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

26 of 26

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

Розділ 6 § 6.2

Сторінка

172

8

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