В 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
В сучасному світі програмування взаємодія з веб-ресурсами стала невід'ємною частиною розробки програм. У цьому практичному завданні ми будемо розглядати, як використовуючи мову програмування Python та бібліотеку Tkinter, створити простий графічний інтерфейс (GUI), який дає можливість користувачу відкривати веб-сторінку за допомогою кнопки.
Мета практичної роботи:
Мета цієї практичної роботи - дати вам можливість ознайомитися із створенням графічного інтерфейсу за допомогою Tkinter та здійснення взаємодії з веб-ресурсами у власних програмах на Python.
Завдання:
1. Створення графічний інтерфейс з використанням Tkinter:
За основу взяти вікно практичної роботи "Авторизація"
2. Натискання кнопки та відкриття веб-сторінки:
При натисканні на кнопку ОК, програма має відкрити веб-сторінку за вказаним URL.
Ви можете використовувати бібліотеку webbrowser для відкриття веб-сторінки в браузері.
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