• <Button-3> — клацання правою кнопкою миші;
• <Double-Button-1> — подвійне клацання лівою кнопкою миші;
• <Motion> — рух миші.
Також це може бути і натискання деяких клавіш на клавіатурі і фокусування (наведення) на певний об'єкт.
Кнопка - об'єкт, при натисканні на який (дії) відбуваються певні події
Потрібно прописати прив'язку до події та функцію - обробник подій
Прив'язка до події (функції)
command=назва функції
(це атрибут кнопки)
Пр.
root=Tk()
btn2=Button(root,
text="Start",
font="Arial 16",
bg="yellow",
fg="blue",
width=20, height=3,
command=add_label)
btn2.pack()
Функція (подія)
def назва функції(аргументи):
команди
Пр.
from tkinter import*
--------------------
def add_label():
label1=Label(root,text="Start")
label1.pack()
root=Tk()
root.geometry("500x600")
----------------------
btn2=Button(root,
text="Start",
font="Arial 16",
bg="yellow",
fg="blue",
width=20, height=3,
command=add_label)
btn2.pack()
root.mainloop()
Розглянули приклад створення простих функцій та прив'язки їх до кнопок.
Для цього у кнопці є параметр command = функція, яка буде виконуватися, коли натискаємо ліву кнопку миші.
В межах оголошеної функції можна виконувати різні операції, задачі, це можуть бути розрахункові тощо. Всі ті що вивчали в курсі основи програмування.
Також можна прив'язати зміну деяких параметрів об'єкту.
Зміни відбуваються так, ніби ми ще раз задаємо ці параметри, які використовували для налаштування параметрів вікна, написів, кнопок тощо.
Так як (до прикладу, параметр bg є у вікна, також є у кнопки.
Маємо універсальну конструкцію для зміну параметрів.
Де прописується функція, вказується ім'я елемента, параметри якого будемо змінювати, далі в квадратних дужках і лапках ["bg"] вказуємо параметр, який буде змінено.
= прописати властивості , які змінемо в об'єкта.
назва об'єкта параметри, якого змінюємо
= "на що змінити"
Приклад.
from tkinter import*
def change():
root["bg"]="#008080" #при натискані кнопки змінюється колір вікна
root=Tk()
root.geometry("300x200")
На практиці найчастіше використовують метод .bind
Зв’язувати об’єкт керування, подію та дію можна й за допомогою методу bind. У функцій-обробників, які викликають через bind, а не через властивість command, має обов’язково бути параметр event,
через який передається подія.
Тоді виклик цієї функції задається конструкцією:
Об’єкт. bind('<подія>', назва_функції)
1) СТВОРЕННЯ ФУНКЦІЇ
Функції створюються наступним чином:
def назва_функції(аргументи):
команда
...
Назву функції ми вигадуємо самостійно, а до команд можуть відноситися створення об’єктів, елементів управління, або змінення властивостей певних об’єктів.
Саме зі зміною властивостей вікна ми і будемо працювати.
Приклад 1 (створення функції)
Давайте створимо функцію, яка б змінювала розміри нашого вікна Window на 500х500 пікселів та встановлювала зелений колір фону. Назвемо нашу функцію change, на місце аргументу встановлюємо event (з англійської - подія), це означатиме, що функція пов’язана з певною подією:
from tkinter import * #підключення модуля
def change(event): #створюємо функцію change з аргументом event
Window.geometry(“500x500”) #прописуємо команди зміни властивості вікна
Window[“bg”]=“green”
2) СТВОРЕННЯ ПОДІЇ
Тепер створимо подію та присвоїмо їй дану функцію. Для цього використовують наступною конструкцією:
назва_об’єкта_до_якого_застосовується_подія.bind(“<подія>”, назва_функції)
Зверніть увагу на те, як потрібно записувати подію. Назву події потрібно вносити в відповідну конструкцію “<>”, про це не треба забувати. Наприклад: “<Button-1>”, “<Button-3>” і т.д.
Приклад 1 (продовження: створення події)
Отже, створимо подію натисканням лівою клавішею миші (Button-1)по області вікна Window, при якій буде виконуватися функція change.
Тобто маємо:
Window.bind(“<Button-1>”, change)
Приклад 1 (готовий код)
Об’єднаємо ці конструкції в одну програму. Створимо новий файл в IDLE та внесемо в нього наступний код:
При запуску даного коду, маємо звичайне вікно:
Але варто нам клацнути лівою кнопкою миші (саме цю подію ми створили) в області даного вікна як вікно змінить розмір і колір фону:
from tkinter import* #підключення модуля
def change(event): #створюємо функцію change з аргументом event
win.geometry("500x500") #прописуємо команди зміни властивості вікна
win["bg"]="green"
win=Tk()
win.bind("<Button-1>",change)
win.mainloop()
Алгоритм створення кнопок із подіями
Підключення модуля tkinter
from tkinter import *
Створення функцій, які описують ті зміни, які ми хочемо, щоб відбулися після виконання події. (Функцій можна створювати багато, одну після одної).
def назва_функції(аргументи):
команда
Створення вікна (вікон), в якому ми хочемо розмістити нашу кнопку (кнопки або інші об’єкти).
назва вікна=Tk()
Описуємо властивості вікна: розміри, заголовок, колір... (якщо це необхідно)
назва вікна.властивість(параметри)
назва вікна[“bg”]=“колір”
Створення кнопки (кнопок) та опис їх атрибутів (властивостей).
назва_кнопки=Button(назва вікна до якого вона належить, атрибут1, ...)
Вказуємо місце розташування кнопки у нашому вікні.
назва_кнопки.place(x=“число”, y=“число”)
Прив’язуємо до кнопки подію (можна послідовно прив’язувати кілька подій до різних об’єктів).
назва_кнопки.bind(“<подія>”, назва_функції)
Вказуємо про завершення роботи з вікном.
назва_вікна.mainloop()
Завдання 2
Створіть новий файл Python та нове вікно розмірами 100x100 із кнопкою but, встановіть для неї такі властивості: колір фону зелений, текст “Ок” червоного кольору, шрифт Times New Roman 12, розміри кнопки: 4 знаки — ширина і 2 знаки — висота. Кнопку розмістити в 20 пікселях від лівого краю, та в 10 пікселях від верхнього краю вікна. Присвойте кнопці подію Button-1, при якій розміри та колір вікна будуть змінюватися. Розміри стануть “200х200”, а колір жовтий.
from tkinter import* #підключення модуля
def fun(event): #створюємо функцію change з аргументом event
win.geometry("200x200") #прописуємо команди зміни властивості вікна
win["bg"]="yellow"
win=Tk()
win.geometry("100x100")
but=Button(win,
width=4,
height=2,
bg="green",
text="Ok",fg="red",font="Times 12")
but.bind("<Button-1>",fun)
but.place(x=20,y=10)
win.mainloop()
Завдання 3
1.Створіть новий файл Python та вікно із заголовком “Вікно №3” та з розмірами 500х500.
2.Створіть кнопку із текстом “Розфарбуй”, розміщену на 200 пікселів від лівого та верхнього краю.
3. Додайте до кнопки подію Button-3, при виконанні якої колір вікна стане блакитним та розмір 800х500. та буде створюватися напис із текстом “Це вікно було створено в середовищі Прізвище (вкажіть ваше прізвище)”. Колір напису повинен бути синім, а колір тексту білий, шрифт тексту “Arial 14”. Напис буде розміщуватися на 200 пікселів від лівого краю та на 250 пікселів від верхнього краю.
from tkinter import* #підключення модуля
def fun(event):#створюємо функцію change з аргументом event
win.geometry("8Ф00x500")
l=Label(win,
text="Це вікно було створено в середовищі Прізвище ",
bg="Blue",fg="white",font="Arial 14")
win["bg"]="LightBlue1"
l.place(x=200,y=200)
win=Tk()
win.geometry("500x500")
but=Button(win,
text="Розфарбуй!")
but.bind("<Button-3>",fun)
but.place(x=200,y=250)
win.mainloop()