8 клас
Практична робота №10 «Обробники подій, пов’язаних з елементами керування. Властивості вікна та використання вікон повідомлень»
Інструктаж з БЖД
Мета: закріпити на практиці навичків створення проєктів із обробниками подій, пов’язаних з елементами керування. Властивості вікна та використання вікон повідомлень.
● Python IDLE. Скачати можна безкоштовно на сайті www.python.org
Виконайте завдання:
1.Обробники подій, пов’язані з елементами керування
повторити параграф 53 с.220-225 підручник Казанцева https://drive.google.com/file/d/1GtlzEx3NSRT7f6JC3jSIJitdB5Jjz-MJ/view?usp=drive_web&authuser=0
Завдання
Завдання. У вікні розташуйте 4 кнопки, що відповідають порам року Зима, Весна, Літо та Осінь. Ліворуч від кнопок розташуйте об’єкт напис сірого кольору з увігнутим рельєфом. При натисканні на відповідну кнопку в об’єкті напис мають з’являтися назви місяців, що відповідають натисненій порі року.
Програмний код
from tkinter import*
def winter_click():
Lbl['text'] = "Грудень\nСічень\nЛютий"
def spring_click():
Lbl['text'] = "Березень\nКвітень\nТравень"
def summer_click():
Lbl['text'] = "Червень\nЛипень\nСерпень"
def autumn_click():
Lbl['text'] = "Вересень\nЖовтень\nЛистопад"
#створення вікна
Window=Tk()
Window.title("Пори року")
Window.geometry("300x250")
#кнопки
winter = Button(text="Зима",font=16,bg="#FFFFFF",command=winter_click)
winter.place(x=20, y=20, width=100)
spring = Button(text="Весна",font=16,bg="#FFA500",command=spring_click)
spring.place(x=20, y=70, width=100)
summer = Button(text="Літо",font=16,bg="#00FFFF",command=summer_click)
summer.place(x=20, y=120, width=100)
autumn = Button(text="Осінь",font=16,bg="#00FF7F",command=autumn_click)
autumn.place(x=20, y=170, width=100)
#напис
Lbl= Label(text="",font=16,bg="#AAAAAA",relief=SUNKEN)
Lbl.place(x=140, y=10, width=100, height=200)
mainloop()
2.Уведення даних
повторити параграф 54 с.226-232 підручник Казанцева https://drive.google.com/file/d/1GtlzEx3NSRT7f6JC3jSIJitdB5Jjz-MJ/view?usp=drive_web&authuser=0
Завдання. Користувач має ввести у текстовому полі, скільки йому років. Після введення числа та натиснення кнопки ОК у вікні консолі має з’явитися повідомлення у форматі «Тобі 12 років», де 12 — число, введене користувачем.
Програмний код
from tkinter import*
def btn_click():
x=int(Ent.get())
print("Тобі",Ent.get(),"років.")
L2['text']="Тобі",Ent.get()," рік."
if x%10==1 and x%100!=11:
L2['text']="Тобі",Ent.get()," рік."
elif (x%10==2 or x%10==3 or x%10==4) and x%100!=12 and x%100!=13 and x%100!=14:
L2['text']="Тобі",Ent.get()," роки."
else:
L2['text']="Тобі",Ent.get()," років."
#створення графічного вікна#
Window=Tk()
Window.title("Скільки років")
Window.geometry("400x300")
#напис#
L1=Label(text="Скільки тобі років?")
L1.place(x=20,y=20)
#текстове поле#
Ent=Entry()
Ent.place(x=20,y=40, width=80)
#Кнопка#
Btn=Button(text="ОК", command=btn_click)
Btn.place(x=20,y=70)
L2=Label(text="")
L2.place(x=20, y=110)
mainloop()
3.Використання вікон повідомлень
повторити параграф 55 с.232-237 підручник Казанцева https://drive.google.com/file/d/1GtlzEx3NSRT7f6JC3jSIJitdB5Jjz-MJ/view?usp=drive_web&authuser=0
Завдання
Створити тренажер виконання дії додавання з двоцифровими числами. У вікні випадковим чином має з’являтися приклад, відповідь на який необхідно ввести у текстове поле. Після натискання кнопки Перевірити має з’явитися повідомлення про правильність виконання прикладу. Кнопка Наступний приклад має вивести інший при-
клад. Завдання, що містять математичні вирази, мають генеруватися випадковим чином. Також у написах вивести номер прикладу, кількість правильних відповідей та кількість помилок.
Програмний код
from tkinter import*
from tkinter.messagebox import*
from random import* #1.додаємо модуль випадкових чисел після створення вікна#
def btn1_click(): #4. обробник події кнопки Перевірити#
#10 вносимо зміни для кнопки перевірити, статистика правильних і неправильних дій#
global k_err, k_ok
if Ent.get()==str(a+b):
answer = showinfo("Вітання!", "Правильно!")#інформаційне вікно повідомлення#
#11. Вносимо для к кількість правильних відповідей#
k_ok=k_ok+1
Lbl_k_ok['text']="Кількість правильних відповідей "+str(k_ok)
else:
answer=showerror("Помилка!", "Неправильно! Спробуй ще раз!")
#12. Вносимо для к кількість помилок#
k_err=k_err+1
Lbl_k_err['text']="Кількість помилок "+str(k_err)
#6.Обробник події кнопки Наступний приклад #
def btn2_click():
global a,b,k
a=randint(10,99)
b=randint(10,99)
Lbl=Label(text=str(a)+"+"+str(b)+"=")
Lbl.place(x="20", y="20")
Ent.delete(0,END)#очищення поля#
#9.Оголошення змінної k #
#формування та виведення значення k
k=k+1 #збільшення k на 1 після виведення нового прикладу
Lb1_k ['text']="Кількість прикладів "+str(k)
#створення графічного вікна#
Window=Tk()
Window.title("Тренажер")
Window.geometry("250x180")
#8.Створення статистики обчислень написи внизу вікна#
k=1
k_err=0
k_ok=0
#2.створення випадкових змінних #
a=randint(10,99)
b=randint(10,99)
#3.Вносимо зміни в текстовому написі#
#текстовий напис#
Lbl=Label(text=str(a)+"+"+str(b)+"=")
Lbl.place(x=20,y=20)
#текстове поле#
Ent=Entry()
Ent.place(x=80,y=20)
#5.Вносuмо команду для кнопок command #
#Кнопка#
Btn1=Button(text="Перевірити",command=btn1_click)
Btn1.place(x=20,y=60)
#7.Вносuмо команду для кнопок command #
Btn2=Button(text="Наступний приклад", command=btn2_click)
Btn2.place(x=100,y=60)
#текстові написи#
Lb1_k=Label(text="Кількість прикладів1")
Lb1_k.place(x=20,y=100)
Lbl_k_ok=Label(text="Кількість правильних відповідей 0")
Lbl_k_ok.place(x=20, y=120)
Lbl_k_err=Label(text="Кількість помилок 0")
Lbl_k_err.place(x=20, y=140)