Використання вікон повідомлень.

Вікно повідомлень є найпростішим з діалогових вікон і дозволяє відображати інформацію про виконання програми та її стан.

Вікно повідомлень не може приймати текстове введення, воно лише пропонує зробити вибір з обмеженої кількості представлених варіантів. Даний тип вікна не вимагає проектування: вікно складається з заголовка, тексту повідомлення, значка і однієї або декількох кнопок. При цьому існує лише певний набір відображуваних значків і кнопок. Крім того, вікно повідомлень є модальним і користувач не може продовжити роботу програми, не натиснувши жодної із запропонованих кнопок.

Вікна повідомлень (діалогові вікна) широко застосовуються для налагодження діалогу з користувачем ПЗ. 

Для створення та використання вікон повідомлень в Python використовують модуль messagebox з пакету tkinter. Цей модуль потрібно імпортувати окремо, використовуючи наступну структуру:

або, ми можемо відразу надати йому скорочене ім'я (mb):

Після імпорту модуля, ми можемо використовувати його функції. 

Інформаційні вікна:

Для виведення інформації для користувача про виконання певної операції, або довідкової інформації часто використовують інформаційні вікна повідомлень. Ці вікна містять лише заголовок, текст повідомлення та значок. Для створення та виклику інформаційного вікна повідомлень використовують функцію showinfo() модуля messagebox у наступному форматі:

Вказана структура згенерує вікно наступного вигляду:

Окрім інформаційних, вікна повідомлень можуть використовуватись для повідомлень про помилки в процесі виконання програм. Тоді замість showinfo() використовують функції showwarning() або showerror() модуля messagebox у наступному форматі:

Які згенерують вікно-попередження та вікно-помилку, відповідно:

 Діалогові вікна:

Окрім вікон повідомлень, які призначенні для інформування користувача про деяку подію, широко застосовуються так званні діалогові вікна, основна функція яких отримати від користувача відповідь на поставлене запитання. Для реалізації діалогових вікон використовують функції askquestion(), askyesno(), askretrycancel(), askyesnocancel(), askyescancel() того ж модуля messagebox:

 

 

 

 

 

 

 

 

 

 

Діалогові вікна, на відмінну від інформаційних, здатні повертати програмі певні значення в залежності від того яка кнопка була натиснута (Так - True або 'yes', Ні - False або 'no').

Перейдемо до практики:

Створити програму, яка згенерує вікно розміром 300 на 20 пікселів, кольором lime та заголовком "Інформаційні та діалогові вікна". Передбачити подію натиснення лівої кнопки миші, яка створить вікно із запитанням на зміну оформлення вікна, якщо відповідь "ТАК" - встановлюємо розмір 500 на 400 пікселів, колір aqua та заголовок "Вікно змінено", якщо відповідь "НІ" - не відбувається нічого. А також подію натиснення правої кнопки миші яка поверне вікно до початкового стану та згенерує вікно-попередження із текстом "Повернення до початкового стану".

Приклад розв'язування завдання:

 

Завдання:

1. Опрацювати статтю та законспектувати основні моменти;

2. Створити програму з практичного завдання за зразком, запустити та перевірити її працездатність;

3. Створити програму, яка згенерує вікно кольору gold, розміром 200 на 300 пікселів, заголовком "Початкове вікно". Передбачити подію натиснення лівої кнопки миші, яка змінить розмір вікна до 500 на 300 пікселів, колір на maroon, заголовком "Зміни відбулися" та згенерує вікно повідомлень про зміну формату (параметри вікна обираєте самостійно). Також створити обробник події натиснення правої кнопки миші яка поверне все у початковий стан і згенерує вікно повідомлень з текстом "Зміни скасовано";

4. Створену у попередньому пункті вікно переслати на перевірку, використовуючи E-mail.