Повні розв’язки, як у зошиті. Хочеш розібратися самостійно — під кожним завданням є «Пояснення з репетитором».
Сторінка 156
Завдання 28
Створення вікна з кнопкою та повідомленням
Створити програму, яка має напис "Hello World!" та кнопку "Привіт". При натисканні кнопки має з'явитися вікно повідомлення із заголовком "Відповідь" і текстом "Hello Again!". Використати шаблони віконного інтерфейсу (Label, Button) та модуль messagebox.
Додайте кнопку `button = tkinter.Button(window, text="Привіт")` і розмістіть її методом `pack()`.
Створіть функцію-обробник події натискання кнопки, яка викликає команду `tkinter.messagebox.showinfo('Відповідь', 'Hello Again!')`.
Присвойте цій функції параметр `command` у створенні кнопки: `button.config(command=ім'я_функції)`.
Запустіть програму за допомогою `window.mainloop()`.
Відповідь:
Програма відображає напис "Hello World!" та кнопку "Привіт". При натисканні кнопки з'являється діалогове вікно із заголовком "Відповідь" і текстом "Hello Again!".
Завдання 29
Програма з вибором виводу тексту або звуку
Створити програму, яка при запуску показує напис «Автори гімну України» та дві кнопки: «Слова» та «Музика». Натискання кнопки «Слова» має вивести відповідь у консоль (термінал) середовища програмування. Натискання кнопки «Музика» — відкрити інформаційне вікно повідомлення (діалогове вікно).
Розв’язання
Створіть вікно `window` та додайте Label з текстом «Автори гімну України».
Створіть кнопку «Слова» і прив'яжіть до неї функцію, яка викликає `print("Текст слів гімну...")`.
Створіть кнопку «Музика» і прив'яжіть до неї функцію, яка викликає `tkinter.messagebox.showinfo('Музика', 'Слухайте гімн України!')`.
Розмістіть кнопки у вікні за допомогою методу `pack()` або `grid()`.
Запустіть програму та перевірте роботу кнопок.
Відповідь:
Програма має напис «Автори гімну України» та дві кнопки. Натискання кнопки «Слова» виводить текст у консоль, натискання кнопки «Музика» відкриває вікно повідомлення.
Завдання 30
Опитувальник з перевіркою відповіді
Скласти опитувальник із запитанням про улюблений предмет. У вікні під запитанням розмістити кнопки «так» та «ні». Якщо користувач натискає правильну кнопку (відповідно до фактів), має з'явитися вікно повідомлення з поясненням правильної відповіді. Якщо неправильна — має з'явитися вікно помилки (`showerror`) із поясненням.
Розв’язання
Створіть вікно та Label із запитанням (наприклад: "Чи подобається вам фізика?").
Створіть кнопки «так» та «ні».
У функції для кнопки «так» додайте умову: якщо це правильна відповідь, викликати `showinfo`, інакше — `showerror`.
Аналогічно налаштуйте функцію для кнопки «ні».
Прив'яжіть обробники до кнопок через властивість `command` та запустіть програму.
Відповідь:
Програма показує запитання та дві кнопки. При натисканні правильної кнопки з'являється повідомлення-підтвердження, при натисканні неправильної — вікно помилки з поясненням.
Завдання 31
Обговорення ідей програмних проєктів
Обговорити в парі, як ідеї з завдань 27 (зміна кольору вікна за подіями) та 28 (створення діалогових вікон при натисканні кнопок), можна використати у власних програмних проєктах. Скористатися результатами обговорення та доповнити власні програми.
Розв’язання
Проаналізуйте код з завдання 27 (обробка подій натискання миші) та завдання 28 (виклик `messagebox`).
Визначте, як ці елементи можна інтегрувати в новий проєкт (наприклад, створити меню або панель керування).
Складіть план розширення програми: додати нові кнопки для вибору режимів роботи або введення даних.
Реалізуйте зміни у коді та протестуйте роботу нової програми.
Відповідь:
Для обговорення неможливо надати готовий код без конкретних деталей проєкту учнів, але план дій включає інтеграцію обробників подій для інтерактивності та використання діалогових вікон для зворотного зв'язку з користувачем.
Завдання 32
Порівняння Label та Entry
Обговорити відмінності та спільні риси елементів керування «Напис» (Label) та «елемент введення рядка тексту» (Entry) у Python.
Розв’язання
Проаналізуй призначення об'єкта `tkinter.Label`: він лише показує текст (`text=`), не має методів для отримання введення користувача.
Проаналізуй призначення об'єкта `tkinter.Entry`: він створює поле для вводу, дозволяє змінювати його вміст і має властивість `get()` для отримання даних.
Порівняй наявність властивостей: у Entry є `bd` (ширина межі) та `show` (маскування символів), тоді як у Label таких немає.
Відповідь:
Спільне: обидва елементи відображають текст у вікні. Відмінне: Label — статичний, лише для виводу; Entry — динамічний, для введення даних користувачем і має властивість `show` (для паролів).