Обробники подій

email:  voronenko@54.edu.ks.ua  

В Python існує кілька способів обробки подій, але одним з найбільш широко використовуваних є використання бібліотеки Tkinter для графічного інтерфейсу користувача (GUI).

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

Обробник події — це підпрограма, яка виконується, як реакція на подію. 

Подією може бути:

Однією із найбільш розповсюджених подій є подія натискання на кнопку.

Типи подій з бібліотеки Tkinter:

Button-1 – натиснення лівої кнопки миші

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

Button-3 – натиснення правої кнопки миші

KeyPress – натиснення клавіші на клавіатурі над віджетом

KeyRelease – відпускання клавіші клавіатури над віджетом

ButtonPress – натиснення кнопки миші над віджетом

ButtonRelease – відпускання кнопки миші над віджетом

Motion – рух миші над віджетом

Configure – зміна розмірів або розташування вікна

Map – показ вікна (розгортання)

Unmap – приховування івікна (згортання)

Destroy – закриття вікна

FocusIn – отримання фокусу віджетом

FocusOut – втрата фокусу віджетом

Enter – курсор миші входить в область вікна

Leave – курсор миші залишає область вікна.

Окрім того, події можна об’єднувати, наприклад:

Double-Button-1 – подвійне натиснення лівої кнопки миші;

Triple-Button-3 – потрійне натиснення правої кнопки миші;

Alt-Motion – рух миші з натисненою клавішею <Alt>;

Control-KeyPress-c – натиснення комбінації клавіш <Ctrl+c> (хоча в даному прикладі подію KeyPress можна не вказувати);

Control-Shift-Keypress-a – натиснення комбінації клавіш <Ctrl+Shift+a> (і в цьому теж подію KeyPress можна не вказувати);.


У Python обробником події є функція.

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

Функції визначаються за допомогою зарезервованого слова def. Після цього слова вказується ім'я функції, за яким слідує пара дужок, в яких можна вказати імена деяких змінних, і заключне двокрапка в кінці рядка. Далі слідує блок команд, що складають функцію. 

ПРАКТИЧНА РОБОТА (частина 1)

ПОДІЯ "Натискання кнопки у вікні"

Створити вікно за зразком, в якому при натисканні на кнопку, що позначає певну пору року, відбувалося відображення назв місяців цієї пори року.


Нам необхідно створити у вікні 4 кнопки (winter, spring, summer, autumn) і один текстовий напис (Lbl).

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

def winter_click():

Lbl=tkinter.Label(text="Грудень\nСічень\nЛютий")

Lbl.place(x=200, y=20)


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


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

winter = tkinter.Button(text="Зима",font=16,bg="white", command=winter_click)

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

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

1 ЕТАП: 

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

2 ЕТАП: Продовжити наповнення програми. 

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

Встановлювати колір можна як за назвою кольору, наприклад "red", "green", "black", так і в шістнадцятковому форматі "#ff0000" - червоний, "#008000" - зелений, "#000000" - чорний. 

Список кольорів https://uk.wikipedia.org/wiki/Список_кольорів

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

1. Опрацювати теоретичний матеріал сторінки сайту.

2. Виконати практичну роботу і надіслати на пошту вчителя: voronenko@54.edu.ks.ua 

3. Пройти тест: https://onlinetestpad.com/k6bnwvludltt4

ПРАКТИЧНА РОБОТА (частина 2)

Відкриття сторінки сайту після успішної авторизації

Дані для використання в програмі:

Логін:  Nickname

Пароль: 45Far$100

Адреса сторінки для відкривання https://prometheus.org.ua/

В сучасному світі програмування взаємодія з веб-ресурсами стала невід'ємною частиною розробки програм. У цьому практичному завданні ми будемо розглядати, як використовуючи мову програмування Python та бібліотеку Tkinter, створити простий графічний інтерфейс (GUI), який дає можливість користувачу відкривати веб-сторінку за допомогою кнопки.

Мета практичної роботи:

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

Завдання:

1. Створення графічний інтерфейс з використанням Tkinter:

2. Натискання кнопки та відкриття веб-сторінки:

1 ЕТАП: 

Модуль webbrowser забезпечує інтерфейс високого рівня, який дозволяє відображати веб-документи користувачам. У більшості випадків простий виклик функції open() з цього модуля буде правильним. 

Для використання бібліотеки в програмі необхідно використати команду:

import webbrowser

webbrowser.open("https://prometheus.org.ua/") 

2 ЕТАП (зчитування напису з текстового поля введення/виведення): 

Об'єкт Entry в бібліотеці tkinter в Python - це віджет текстового поля, який дозволяє користувачеві вводити текст. Він є частиною бібліотеки tkinter, яка є стандартним інтерфейсом Python.

Із текстового поля можна "взяти" текст за допомогою функції get()

Для відкриття сторінки в браузері, після успішного проходження авторизації і натисканні кнопки ОК, ми маємо створити функцію open_url(), яка виконає ці дії. Для цього можна ввести наступний код:


def open_url():

if Login_Ent.get()=="Nickname" and Pass_Ent.get()=="45Far$100":

webbrowser.open("https://prometheus.org.ua/")


Тут def — службове слово, що вказує на створення функції, open_url() — назва функції, 

Login_Ent — назва змінної для поля введення логіну

Pass_Ent — назва змінної для поля введення паролю.


УВАГА!
Коди функції необхідно записати до того, як її викликають. 

3 ЕТАП (створення вікна Авторизація): 

Процес створення вікна для Авторизації детально розглянутий за посиланням в уроці "Об'єкт кнопка".

У властивостях об'єкта "кнопка" btn1 треба додати атрибут command=open_url


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

1. Опрацювати теоретичний матеріал сторінки сайту.

2. Виконати практичну роботу (частина 2) і надіслати на пошту вчителя: voronenko@54.edu.ks.ua