Дайте відповіді на запитання
1. Як створити кнопку?
Щоб створити кнопку, потрібно використати команду ім'я_кнопки = Button()
або ім'я_кнопки = Button(властивість = значення)
. У першому випадку кнопка буде створена зі стандартними налаштуваннями, а в другому — із заданими властивостями.
2. Як розмістити створену кнопку у вікні?
Кнопку можна розмістити у вікні двома способами :
- За допомогою методу
pack()
, який автоматично розміщує кнопку у вікні, зазвичай по центру зверху. - За допомогою методу
place(x=..., y=...)
, який розміщує верхній лівий кут кнопки у точці вікна із заданими координатамиx
таy
.
3. Які ви знаєте властивості кнопки? Що визначає кожна з них?
Основні властивості кнопки :
text
— визначає текст, який буде відображатися на кнопці.width
— встановлює ширину кнопки в символах.height
— встановлює висоту кнопки в рядках тексту.bg
(абоbackground
) — визначає колір фону кнопки.fg
(абоforeground
) — визначає колір тексту на кнопці.font
— встановлює шрифт, розмір та накреслення (наприклад, жирний або курсив) тексту.state
— визначає стан кнопки, наприклад,normal
(звичайна) абоdisable
(недоступна).
4. Як задати значення властивостей кнопки?
Значення властивостей можна задати двома способами :
- Безпосередньо при створенні кнопки, перелічивши їх у дужках:
bt = Button(text='Натисни', width=15)
. - Після створення кнопки, використовуючи такий синтаксис:
btn['width'] = 25
абоbtn['fg'] = 'blue'
.
5. Якими способами можна призначити для кнопки обробники подій?
Для кнопки можна призначити обробники подій двома основними способами :
- Використовуючи метод
bind()
, який дозволяє пов’язати будь-яку подію з її обробником. - Використовуючи властивість
command
, яка є простішим способом для обробки події клацання мишею.
6. Як можна призначити для кнопки обробник події Click?
Щоб призначити обробник події клацання (Click), потрібно під час створення кнопки вказати ім’я процедури-обробника як значення властивості command
. Наприклад: btn = Button(command=my_function)
.
7. Як у проєкті змінити значення властивостей кнопки?
Для зміни властивостей кнопки під час виконання проєкту (наприклад, в обробнику події) використовується команда виду: ім'я_кнопки['назва_властивості'] = нове_значення
. Наприклад, щоб змінити текст на кнопці btn
, можна написати btn['text'] = 'Новий текст'
.
Обговоріть і зробіть висновки
1. Чим відрізняється у проєкті створення та відкриття вікна від створення та розміщення кнопки?
Створення та відкриття вікна — це початковий етап, що створює головний контейнер для всіх інших елементів. Кнопка ж є дочірнім елементом, який створюється вже після вікна і обов’язково має бути в ньому розміщений за допомогою методів pack()
або place()
. Вікно створюється командою Tk()
, а кнопка — Button()
.
2. Що спільного і відмінного в обробниках події для вікна і для кнопки?
- Спільне: Для обох, і для вікна, і для кнопки, можна призначати обробники подій за допомогою методу
bind()
, який дозволяє пов’язати функцію з певною подією. - Відмінне: Основна відмінність полягає в обробці події клацання лівою кнопкою миші. Для кнопки існує спеціальна властивість
command
, яка спрощує призначення обробника для цієї події. При використанніcommand
в заголовку процедури-обробника не потрібно вказувати аргументevent
, на відміну від використання методуbind()
.
Виконайте завдання
1. Створіть проєкт, у якому в результаті настання події Click для кнопки її ширина стане 30 символів, висота 3 символи і зміниться текст на кнопці на назву вашого населеного пункту.
from tkinter import *
def click():
btn['width'] = 30
btn['height'] = 3
btn['text'] = 'Київ'
window = Tk()
btn = Button(command=click)
btn.pack()
window.mainloop()
2. Створіть проєкт, у якому в результаті настання події MouseMove для кнопки її ширина стане 20 символів, висота 4 символи і зміниться текст на кнопці на ваше прізвище.
from tkinter import *
def mouse_move(event):
btn['width'] = 20
btn['height'] = 4
btn['text'] = 'Петренко'
window = Tk()
btn = Button(text='Натисни', width=10, height=2, bg='lightblue')
btn.bind('<Motion>', mouse_move)
btn.pack()
window.mainloop()
3. Створіть проєкт, у якому в результаті настання події DoubleClick для кнопки зміниться її ширина і висота, текст на кнопці, колір фону і колір тексту, а для вікна – його розміри, колір фону, текст у рядку заголовка.
from tkinter import *
def double_click(event):
btn['width'] = 25
btn['height'] = 5
btn['text'] = 'Подвійне клацання'
btn['bg'] = 'yellow'
btn['fg'] = 'red'
window.geometry('400x300')
window['bg'] = 'lightgreen'
window.title('Нове вікно')
window = Tk()
btn = Button()
btn.bind('<Double-Button-1>', double_click)
btn.pack()
window.mainloop()
4. Створіть проєкт, у якому розташуйте у вікні три кнопки однакових розмірів одна під одною. Початковий колір верхньої кнопки – червоний, двох інших – чорний. Створіть обробники події Click для кожної кнопки такі, щоб вибір середньої кнопки робив її жовтою, а дві інші – чорними; вибір нижньої кнопки робив її зеленою, а дві інші – чорними; вибір верхньої кнопки робив її червоною, а дві інші – чорними.
from tkinter import *
def click1():
btn1['bg'] = 'red'
btn2['bg'] = 'black'
btn3['bg'] = 'black'
def click2():
btn1['bg'] = 'black'
btn2['bg'] = 'yellow'
btn3['bg'] = 'black'
def click3():
btn1['bg'] = 'black'
btn2['bg'] = 'black'
btn3['bg'] = 'green'
window = Tk()
btn1 = Button(text='Кнопка 1', width=15, height=2, bg='red', command=click1)
btn2 = Button(text='Кнопка 2', width=15, height=2, bg='black', fg='white', command=click2)
btn3 = Button(text='Кнопка 3', width=15, height=2, bg='black', fg='white', command=click3)
btn1.pack()
btn2.pack()
btn3.pack()
window.mainloop()
5. Створіть проєкт, у якому розташуйте у вікні три кнопки горизонтально одну поруч з іншою. Установіть такі значення їх властивостей, щоб на початку виконання проєкту перша кнопка була видима і доступна, друга – видима і недоступна, третя – невидима і недоступна. Для кожної кнопки створіть обробник події Click, щоб вибір першої кнопки робив її невидимою і недоступною, другу кнопку – видимою і доступною, третю кнопку – видимою і недоступною; вибір другої кнопки робив її невидимою і недоступною, третю кнопку – видимою і доступною, першу кнопку – видимою і недоступною; вибір третьої кнопки робив її невидимою і недоступною, першу кнопку – видимою і доступною, другу кнопку – видимою і недоступною.
from tkinter import *
# Створюємо вікно
window = Tk()
window.title('Проєкт з трьома кнопками')
window.geometry('400x100')
# Обробник події для кнопки 1
def click1():
button1.place_forget()
button1['state'] = 'disable'
button2.place(x=10, y=30)
button2['state'] = 'normal'
button3.place(x=140, y=30)
button3['state'] = 'disable'
# Обробник події для кнопки 2
def click2():
button2.place_forget()
button2['state'] = 'disable'
button3.place(x=140, y=30)
button3['state'] = 'normal'
button1.place(x=10, y=30)
button1['state'] = 'disable'
# Обробник події для кнопки 3
def click3():
button3.place_forget()
button3['state'] = 'disable'
button1.place(x=10, y=30)
button1['state'] = 'normal'
button2.place(x=75, y=30)
button2['state'] = 'disable'
# Створюємо три кнопки
button1 = Button(text='Кнопка 1', width=10, command=click1)
button2 = Button(text='Кнопка 2', width=10, state='disable', command=click2)
button3 = Button(text='Кнопка 3', width=10, state='disable', command=click3)
# Розміщуємо кнопки горизонтально
button1.place(x=10, y=30)
button2.place(x=75, y=30)
# Кнопка 3 не розміщується, бо вона невидима
# Запускаємо вікно
window.mainloop()
Готуємось до вивчення нового матеріалу
1. Які ще елементи керування, крім кнопки, ви використовували під час роботи з різними програмами?
Під час роботи з програмами використовуються такі елементи керування:
- Текстові поля для введення інформації
- Списки вибору з варіантами
- Прапорці для позначення опцій
- Перемикачі для вибору одного з варіантів
- Повзунки для регулювання значень
- Меню для вибору команд
- Вкладки для перемикання між розділами
2. Для чого використовується графічний об’єкт Напис у текстовому процесорі Word?
Графічний об’єкт Напис у Word використовується для розміщення тексту в довільному місці документа з можливістю його вільного переміщення та форматування. Напис дозволяє створювати текстові блоки, які не прив’язані до основного потоку тексту, змінювати їх розмір, колір фону, межі та розташування на сторінці.