Дайте відповіді на запитання
1. Для чого може використовуватися поле?
Поле (Entry) — це елемент керування, який переважно використовується для введення даних користувачем, але його також можна застосовувати для виведення результатів.
2. Як створити поле і розмістити його у вікні?
Щоб створити та розмістити поле, потрібно виконати такі кроки:
- Створити об’єкт типу
Entryі пов’язати його зі змінною, наприклад:моє_поле = Entry(). - За бажанням встановити властивості поля при його створенні:
моє_поле = Entry(width=20, font='Arial 14'). - Розмістити поле у вікні за допомогою одного з методів, наприклад
pack()абоplace():моє_поле.pack().
3. Які властивості поля ви знаєте? Схарактеризуйте їх.
Основні властивості поля :.
width: ширина поля в символах.bg: колір фону поля.fg: колір тексту в полі.font: шрифт, його розмір і стиль для тексту в полі.bd: товщина рамки навколо поля.
4. Як задати значення властивості поля в команді його створення?
Значення властивостей задаються безпосередньо в дужках під час створення об’єкта Entry як пари <властивість> = <значення>, перелічені через кому. Наприклад: поле2 = Entry(width=15, bg='yellow', fg='green').
5. Як змінити значення властивості поля в ході виконання проєкту?
Значення властивостей поля можна змінювати в обробниках подій. Наприклад, щоб змінити колір фону та тексту після кліку, можна використати команди, які змінюють колір фону на жовтий, а колір символів на червоний.
6. Як отримати значення з поля; записати в поле; видалити дані з поля?
- Отримати значення: за допомогою методу
get(). Наприклад:змінна = назва_поля.get(). - Записати в поле: за допомогою методу
insert(), вказавши позицію та текст. Наприклад:назва_поля.insert(0, 'текст для вставки'). - Видалити дані: за допомогою методу
delete(), вказавши початкову та кінцеву позиції. Щоб очистити все поле:назва_поля.delete(0, END).
7. Якими командами можна перевести текстове подання числа безпосередньо в число і навпаки?
- Для перетворення тексту на число використовують функції
int()(для цілих чисел) таfloat()(для дробових чисел). Наприклад:число = int(назва_поля.get()). - Для перетворення числа на текст (рядок) використовують функцію
str(). Наприклад:label['text'] = str(змінна_з_числом).
8. Чим константа відрізняється від змінної?
Константа — це величина, значення якої не змінюється протягом усього виконання проєкту. На відміну від неї, значення змінної може змінюватися багато разів. У мові програмування Python імена констант прийнято записувати великими літерами, наприклад, PI = 3.14159.
Обговоріть і зробіть висновки
1. Чим відрізняються команди виведення в напис і в поле?
Команди виведення відрізняються синтаксисом і принципом роботи. Щоб вивести текст у напис, потрібно змінити значення його властивості text, наприклад: напис['text'] = 'новий текст'. Для виведення в поле використовується метод insert(), який вставляє текст у вказану позицію, наприклад: поле.insert(0, 'новий текст').
2. Чим відрізняються команди виведення в поле й у вікно повідомлень?
Виведення в поле (insert) додає текст до існуючого елемента у головному вікні, і цей текст користувач може редагувати. Виведення у вікно повідомлень (наприклад, за допомогою showinfo()) створює нове тимчасове вікно, яке з’являється поверх основного для показу інформації та закривається після натискання кнопки.
Виконайте завдання
1. Створіть проєкт, у якому в результаті настання події Click для поля буде встановлено ширину поля 15 символів і виведено текст у поле «Інформатика» синім кольором на жовтому фоні. Початкові значення властивостей поля залиште за замовчуванням. Збережіть проєкт у вашій папці у файлі з іменем завдання 4.4.1.
# завдання 4.4.1
from tkinter import *
def on_click(event):
field.config(width=15, bg='yellow', fg='blue')
field.delete(0, END)
field.insert(0, 'Інформатика')
root = Tk()
root.title('Завдання 4.4.1')
field = Entry(root)
field.pack(pady=20, padx=20)
field.bind('<Button-1>', on_click) # <Button-1> це клік лівою кнопкою миші
root.mainloop()
2. Створіть проєкт, у якому в результаті настання події DoubleClick для поля буде встановлено товщину рамки поля 3 пікселі і змінено текст у полі на ваше ім’я синім кольором. Початкові значення властивостей поля виберіть самостійно. Збережіть проєкт у вашій папці у файлі з іменем завдання 4.4.2.
# завдання 4.4.2
from tkinter import *
def on_double_click(event):
field.config(bd=3, fg='blue')
field.delete(0, END)
field.insert(0, "Моє ім'я") # Замість "Моє ім'я" впиши своє
root = Tk()
root.title('Завдання 4.4.2')
field = Entry(root, width=25, font='Arial 14', justify=CENTER)
field.insert(0, 'Двічі клацни по мені')
field.pack(pady=20, padx=20)
field.bind('<Double-Button-1>', on_double_click)
root.mainloop()
3. Створіть проєкт, у якому в результаті настання події MouseMove для поля буде змінено текст у ньому, установлено червоний колір тексту, сірий колір фону і ширина поля збільшиться на 5 символів. Початкові значення властивостей поля виберіть самостійно. Збережіть проєкт у вашій папці у файлі з іменем завдання 4.4.3.
# завдання 4.4.3
from tkinter import *
def on_mouse_move(event):
current_width = field.cget('width')
field.config(width=current_width + 5, bg='grey', fg='red')
field.delete(0, END)
field.insert(0, 'Миша рухається!')
# Щоб подія не спрацьовувала постійно, її можна відв'язати
field.unbind('<Motion>')
root = Tk()
root.title('Завдання 4.4.3')
field = Entry(root, width=20, font='Calibri 12')
field.pack(pady=20, padx=20)
field.insert(0, 'Наведи сюди мишу')
field.bind('<Motion>', on_mouse_move) # <Motion> це рух миші над віджетом
root.mainloop()
4. Створіть математичну модель і проєкт для обчислення значення виразу (2a + b)(a – b).
- Математична модель:
- Вхідні дані: два числа
aіb. - Результат: число
z. - Формула: $z = (2 \cdot a + b) \cdot (a – b)$
- Вхідні дані: два числа
# завдання 4.4.4
from tkinter import *
def calculate(event):
a = float(entry_a.get())
b = float(entry_b.get())
result = (2 * a + b) * (a - b)
label_result['text'] = f'Результат: {result}'
root = Tk()
root.title('Завдання 4.4.4')
Label(root, text='Введіть a:').pack()
entry_a = Entry(root)
entry_a.pack()
Label(root, text='Введіть b:').pack()
entry_b = Entry(root)
entry_b.pack()
button = Button(root, text='Обчислити')
button.pack()
button.bind('<Button-1>', calculate)
label_result = Label(root, text='Результат:')
label_result.pack()
root.mainloop()
5. Створіть математичну модель і проєкт для обчислення значення виразу (3a – b)(a + 2*b).
Математична модель:
- Вхідні дані: два числа
aіb. - Результат: число
z. - Формула: $z = (3 \cdot a – b) \cdot (a + 2 \cdot b)$
# завдання 4.4.5
from tkinter import *
def calculate(event):
a = float(entry_a.get())
b = float(entry_b.get())
result = (3 * a - b) * (a + 2 * b)
label_result['text'] = f'Результат: {result}'
root = Tk()
root.title('Завдання 4.4.5')
Label(root, text='Введіть a:').pack()
entry_a = Entry(root)
entry_a.pack()
Label(root, text='Введіть b:').pack()
entry_b = Entry(root)
entry_b.pack()
button = Button(root, text='Обчислити')
button.pack()
button.bind('<Button-1>', calculate)
label_result = Label(root, text='Результат:')
label_result.pack()
root.mainloop()
6. Створіть математичну модель і проєкт для обчислення довжини кола за даним радіусом, використовуючи константу.
Математична модель:
- Вхідні дані: радіус кола
R. - Константа: число $\pi$ (PI = 3.14159).
- Результат: довжина кола
L. - Формула: $L = 2 \cdot \pi \cdot R$
# завдання 4.4.6
from tkinter import *
PI = 3.14159
def calculate(event):
r = float(entry_r.get())
length = 2 * PI * r
label_result['text'] = f'Довжина кола: {length:.2f}' # .2f для двох знаків після коми
root = Tk()
root.title('Завдання 4.4.6')
Label(root, text='Введіть радіус R:').pack()
entry_r = Entry(root)
entry_r.pack()
button = Button(root, text='Обчислити')
button.pack()
button.bind('<Button-1>', calculate)
label_result = Label(root, text='Довжина кола:')
label_result.pack()
root.mainloop()
7. Створіть математичну модель і проєкт для обчислення шляху, який проходить світло у вакуумі за певний час.
Математична модель:
- Вхідні дані: час
t(в секундах). - Константа: швидкість світла у вакуумі
c(приблизно 300 000 000 м/с). - Результат: шлях
S(в метрах). - Формула: $S = c \cdot t$
# завдання 4.4.7
from tkinter import *
SPEED_OF_LIGHT = 299792458 # м/с
def calculate(event):
t = float(entry_t.get())
distance = SPEED_OF_LIGHT * t
label_result['text'] = f'Шлях: {distance} метрів'
root = Tk()
root.title('Завдання 4.4.7')
Label(root, text='Введіть час t (в секундах):').pack()
entry_t = Entry(root)
entry_t.pack()
button = Button(root, text='Обчислити')
button.pack()
button.bind('<Button-1>', calculate)
label_result = Label(root, text='Шлях:')
label_result.pack()
root.mainloop()
8. Створіть математичну модель і проєкт для визначення, яку суму грошей має заплатити споживач за використану електроенергію.
Математична модель:
- Вхідні дані: кількість спожитої електроенергії
W(у кВт·год). - Константа: тариф за 1 кВт·год
T(наприклад, 2.64 грн). - Результат: сума до сплати
S(у грн). - Формула: $S = W \cdot T$
# завдання 4.4.8
from tkinter import *
TARIFF = 2.64 # грн за кВт·год (умовний тариф)
def calculate(event):
w = float(entry_w.get())
cost = w * TARIFF
label_result['text'] = f'До сплати: {cost:.2f} грн'
root = Tk()
root.title('Завдання 4.4.8')
Label(root, text='Введіть спожиту енергію (кВт·год):').pack()
entry_w = Entry(root)
entry_w.pack()
button = Button(root, text='Розрахувати вартість')
button.pack()
button.bind('<Button-1>', calculate)
label_result = Label(root, text='До сплати:')
label_result.pack()
root.mainloop()
9. Клієнт поклав у банк х грн під р % річних. За умовою банку прибуток за рік додається до вкладу. Створіть математичну модель і проєкт для визначення, який прибуток клієнт отримає через 2 роки.
Математична модель:
- Вхідні дані: початкова сума
x(грн), річний відсотокp. - Розрахунок:
- Сума після 1-го року: $x_1 = x + x \cdot \frac{p}{100} = x \cdot (1 + \frac{p}{100})$
- Сума після 2-го року: $x_2 = x_1 + x_1 \cdot \frac{p}{100} = x_1 \cdot (1 + \frac{p}{100}) = x \cdot (1 + \frac{p}{100})^2$
- Прибуток за 2 роки:
profit$= x_2 – x$
# завдання 4.4.9
from tkinter import *
def calculate(event):
x = float(entry_x.get())
p = float(entry_p.get())
# Розрахунок суми через 2 роки
total_amount = x * (1 + p / 100)**2
# Розрахунок чистого прибутку
profit = total_amount - x
label_result['text'] = f'Прибуток за 2 роки: {profit:.2f} грн'
root = Tk()
root.title('Завдання 4.4.9')
Label(root, text='Введіть початкову суму (грн):').pack()
entry_x = Entry(root)
entry_x.pack()
Label(root, text='Введіть річний відсоток (%):').pack()
entry_p = Entry(root)
entry_p.pack()
button = Button(root, text='Розрахувати прибуток')
button.pack()
button.bind('<Button-1>', calculate)
label_result = Label(root, text='Прибуток за 2 роки:')
label_result.pack()
root.mainloop()
Практична робота № 4. «Проєкти з полями, написами і кнопками, з уведенням даних і виведенням результатів»
Задача 1. Проєкт «практична 4.1»
Цей проєкт створює вікно з полем та кнопкою. Після натискання на кнопку властивості поля змінюються.
# практична 4.1
from tkinter import *
# Обробник події для кнопки
def change_field_properties():
# Отримуємо поточну ширину поля і додаємо 20
new_width = field.cget("width") + 20
# Змінюємо властивості поля
field.config(bg="red", fg="white", font="Arial 14", width=new_width)
# Очищуємо поле і вставляємо новий текст
field.delete(0, END)
field.insert(0, "Ми використовуємо властивості поля!")
# Створення головного вікна
root = Tk()
root.title("Практична 4.1")
root.geometry("500x150") # Розмір вікна# Створення поля
field = Entry(root, width=15, bd=3)
field.place(x=20, y=30) # Розміщення з відступами# Створення кнопки
button = Button(root,
text="8-А клас", # Вкажіть свій клас
width=10,
fg="blue",
bg="yellow",
command=change_field_properties) # Прив'язка функції до кнопки# Розміщення кнопки з відступом від поля
button.place(x=20, y=70) *# 30 (відступ поля) + 25 (висота поля) + 15 (відступ) ~ 70# Запуск головного циклу
root.mainloop()
Задача 2. Проєкт «практична 4.2»
Математична модель:
- Вхідні дані: два числа
aіb. - Результат: число
result. - Формула: $result = a \cdot (4 \cdot b – a)$
Код проєкту:
# практична 4.2
from tkinter import *
# Функція для обчислення
def calculate():
try:
a = float(entry_a.get())
b = float(entry_b.get())
result = a * (4 * b - a)
label_result.config(text=f"Результат: {result}")
except ValueError:
label_result.config(text="Помилка: введіть числа!")
# Створення вікна
root = Tk()
root.title("Практична 4.2")
root.geometry("300x200")
# Створення компонентів
Label(root, text="Введіть число a:").pack()
entry_a = Entry(root)
entry_a.pack()
Label(root, text="Введіть число b:").pack()
entry_b = Entry(root)
entry_b.pack()
Button(root, text="Обчислити", command=calculate).pack(pady=10)
label_result = Label(root, text="Результат:")
label_result.pack()
root.mainloop()
Задача 3. Проєкт «практична 4.3»
Математична модель:
- Вхідні дані:
money: сума грошей, яку дала мати (грн).cookie_price: ціна печива за 1 кг (грн).milk_price: ціна за 1 пакет молока (грн).bread_price: ціна хліба (грн).
- Витрати:
- Вартість печива:
cookie_price * 0.4(бо 400 г = 0.4 кг). - Вартість молока:
milk_price * 2.
- Вартість печива:
- Результат:
change(решта). - Формула: $change = money – (cookie_price \cdot 0.4 + milk_price \cdot 2 + bread_price)$
Код проєкту:
# практична 4.3
from tkinter import *
# Функція для розрахунку решти
def calculate_change():
try:
money = float(entry_money.get())
cookie_price = float(entry_cookie.get())
milk_price = float(entry_milk.get())
bread_price = float(entry_bread.get())
# Обчислення загальних витрат
total_cost = (cookie_price * 0.4) + (milk_price * 2) + bread_price
# Обчислення решти
change = money - total_cost
# Виведення результату
label_result.config(text=f"Решта: {change:.2f} грн")
except ValueError:
label_result.config(text="Помилка: перевірте введені дані!")
# Створення вікна
root = Tk()
root.title("Практична 4.3")
root.geometry("350x300")
# Компоненти для введення даних
Label(root, text="Скільки грошей у Марійки (грн):").pack()
entry_money = Entry(root)
entry_money.pack()
Label(root, text="Ціна печива (за 1 кг):").pack()
entry_cookie = Entry(root)
entry_cookie.pack()
Label(root, text="Ціна молока (за пакет):").pack()
entry_milk = Entry(root)
entry_milk.pack()
Label(root, text="Ціна хліба:").pack()
entry_bread = Entry(root)
entry_bread.pack()
# Кнопка та напис для результату
Button(root, text="Розрахувати решту", command=calculate_change).pack(pady=15)
label_result = Label(root, text="Решта:")
label_result.pack()
root.mainloop()
Готуємось до вивчення нового матеріалу
1. Які типи змінних ви знаєте? Наведіть приклади їх значень.
Я знаю такі основні типи змінних:
- Цілий тип (
int): використовується для цілих чисел. Приклади:5,10,0. - Дійсний або дробовий тип (
float): використовується для дробових чисел. Приклади:2.7,15.38,0.5. - Рядковий тип (
string): використовується для тексту. Приклади:"Привіт","Я навчаюсь","8-А клас".
2. Що визначають типи змінних?
Тип змінної визначає, які значення вона може приймати та які операції з нею можна виконувати. Наприклад, зі змінними числових типів (int і float) можна робити математичні обчислення (додавати, множити), а зі змінними рядкового типу так робити не можна, оскільки вони представляють текст.
