Окрім напису, який є статичним об’єктом вікна графічної форми результату виконання програми мовою Python, можна використовувати об’єкти — елементи керування, які можуть «реагувати» на деякі події.
• <Button-3> — клацання правою кнопкою миші;
• <Double-Button-1> — подвійне клацання лівою кнопкою миші;
• <Motion> — рух миші.
При описі події натискання клавіш клавіатури літерні клавіші можна записувати без кутових дужок (наприклад, ’L’). Для неалфавітних клавіш існують спеціальні зарезервовані слова:
• <Return> — натискання клавіші Enter;
• <Space> — пропуск;
• <Control> — натискання клавіші Ctrl;
• <Shift> — натискання клавіші Shift;
• <z> — натискання клавіші z.
В останньому випадку замість z можна використовувати будь-який символ клавіатури, що містить літеру. Назву події натисканні комбінації клавіш вказують через дефіс. Наприклад: <Control-a> або <Control-Shift>.
Зв’язувати об’єкт керування, подію та дію можна й за допомогою методу bind. У функцій-обробників, які викликають через bind, а не через властивість command, має обов’язково бути параметр event,
через який передається подія.
Тоді виклик цієї функції задається конструкцією:
Об’єкт bind('<подія>', назва_функції)
Кнопка - об'єкт, при натисканні на який відбуваютьься певні події
Потрібно прописати прив'язку до події та функцію - обробник подій
Підключили модуль tkinter
Функцію оголошує оператор def ім'я функції say_click (придумуємо самостійно) потім двокрапка і з нового рядка з відступом прописується подія print ("Натисни кнопку!")
Створити об'єкт вікно root класу Tk , де будемо створювати кнопку
font="Arial 16",
bg="pink",
fg="blue",
width=20, height=3,
command=say_click
)
btn1.pack()
Щоб створити кнопку , використовують клас Button, який входить до модуля tkinter
Створюємо новий об'єкт і даємо йому ім'я btn1 , кажемо, що він відноситься до класу Button .
І в дужках прописуємо основні параметри: вікно root , в якому буде розміщена кнопка, атрибут text - текст на кнопці (Натисни кнопку!)
І вже відомі параметри: font, bg, fg, width, height
Перевірили, кнопки на екрані немає(! Тому, що не розмістили у вікні, це виконує пакувальник.
Розмістимо у вікні за допомогою пакувальника .pack()
Натискаємо на кнопку, але нічого не відбувається!!! А це є головне призначення кнопки - при натисканні виконується певна подія.
Для цього існує параметр класу Button: command=вказати назву функції, яка буде виконуватися при натисканні кнопки.
Цю функцію також потрібно створити. Функція оголошується оператором def say_click() , і каже, що при натисканні кнопки у консолі надрукується текст Натисни кнопку! (Стільки разів, скільки натиснемо кнопку).
зациклили програму, шоб коректно працювала
from tkinter import*
def say_click():
print ("Натисни кнопку!")
def add_label():
label1=Label(root,text="Start")
label1.pack()
root=Tk()
root.geometry("500x600")
btn1=Button(root,
text="Натисни кнопку!",
font="Arial 16",
bg="pink",
fg="blue",
width=20, height=3,
command=say_click
)
btn1.pack()
btn2=Button(root,
text="Start",
font="Arial 16",
bg="yellow",
fg="blue",
width=20, height=3,
command=add_label
)
btn2.pack()
root.mainloop()
Створимо ще одну кнопку btn2 , пропишемо прив'язку до події command=add_label
Створимо функцію add_label :
в середині функції прописуємо подію
створюємо змінну label1, яка відноситься до класу Label і її напис, буде розташований на вікні root.
Розмістимо у вікні за допомогою пакувальника .pack()
Напис Start буде з'являтися, але вже у вікні.
Порівняти .pack() і .place(x=a, y=b)
from tkinter import*
def say_click():
print ("Натисни кнопку!")
def add_label():
label1=Label(root,text="Start")
root["bg"]="#008080"
label1.pack()
root=Tk()
root.geometry("500x600")
btn1=Button(root,
text="Натисни кнопку!",
font="Arial 16",
bg="pink",
fg="blue",
width=20, height=3,
command=say_click
)
btn1.place(x=20, y=50)
btn2=Button(root,
text="Start",
font="Arial 16",
bg="yellow",
fg="blue",
width=20, height=3,
command=add_label
)
btn2.place(x=20, y=200)
root.mainloop()
Створимо ще одну кнопку btn2 , пропишемо прив'язку до події command=add_label
Створимо функцію add_label :
в середині функції прописуємо подію
створюємо змінну label1, яка відноситься до класу Label і її напис, буде розташований на вікні root.
Розмістимо у вікні за допомогою пакувальника .place(x=a, y=b)
Напис Start буде з'являтися, але вже у вікні.
В попередньому завданні розглянули приклад створення простих функцій та прив'язки їх до кнопок.
Для цього у кнопці є параметр command = функція, яка буде виконуватися, коли натискаємо ліву кнопку миші.
В межах оголошеної функції можна виконувати різні операції, задачі, це можуть бути розрахункові тощо. Всі ті що вивчали в курсі основи програмування.
Також можна прив'язати зміну деяких параметрів об'єкту.
Зміни відбуваються так, ніби ми ще раз задаємо ці параметри, які використовували для налаштування параметрів вікна, написів, кнопок тощо.
назва об'єкта параметри, якого змінюємо
= "на що змінити"
Так працює пакувальник .grid
from tkinter import*
root=Tk()
root.geometry("300x200")
btn1=Button(root,text="Start",font="Arial 18",bg="pink")
btn1.grid(row=0,column=0)
root.mainloop()
В попередньому завданні розглянули приклад створення простих функцій та прив'язки їх до кнопок.
Для цього у кнопці є параметр command = функція, яка буде виконуватися, коли натискаємо ліву кнопку миші.
В межах оголошеної функції можна виконувати різні операції, задачі, це можуть бути розрахункові тощо. Всі ті що вивчали в курсі основи програмування.
Також можна прив'язати зміну деяких параметрів об'єкту.
Зміни відбуваються так, ніби ми ще раз задаємо ці параметри, які використовували для налаштування параметрів вікна, написів, кнопок тощо.
назва об'єкта параметри, якого змінюємо
= "на що змінити"
from tkinter import*
def change():
root["bg"]="#008080"
root=Tk()
root.geometry("300x200")
root["bg"]="white"
root.resizable(0,0)
btn1=Button(root,text="Start",font="Arial 18",
bg="pink",fg="blue",
command=change)
btn1.grid(row=0,column=0)
root.rowconfigure(0,minsize=200)
root.columnconfigure(0,minsize=300)
root.mainloop()
Підключили модуль tkinter
Створили вікно root і налаштували його властивості: розміри, колір тла, неможливість змінювати встановлені розміри.
Створили кнопку btn1 і розмістили її у комірці (0,0)
Встановили розміри цієї комірки так, що вона займає все вікно. Завдяки чому кнопка розташована посередині.
У параметрі command до кнопки btn1 прив'язали функцію change
Функцію change оголосили за допомогою оператора def, вона виконує зміну кольору тла вікна, при натисканні кнопки, яка підписана Start