uabooks.top » Інформатика » Створення інтерфейсу користувача
Інформація про новину
  • Переглядів: 26
  • Дата: 8-05-2020, 19:38
8-05-2020, 19:38

Створення інтерфейсу користувача

Категорія: Інформатика




Ви вже маєте досвід написання програм із графічним інтерфейсом із використанням бібліотеки tkinter. Створення графічних компонентів (віджетів) потребує достатньо об’ємного коду. Коли створюється програма для подальшого багаторазового використання (гра, навчальна програма тощо), складнощі роботи з tkinter виправдані. Проте, розробляючи просту програму для обчислень або обробки текстових даних, теж не обов’язково обмежуватися роботою в консолі

Бібліотека EasyGUI надає можливість швидко створювати зручний графічний інтерфейс із використанням вікон виведення повідомлень, кнопкових меню, діалогових вікон та зображень

Для доступу до функцій бібліотеки EasyGUI її слід встановити на комп’ютер із офіційного сайта easygui.sourceforge.net

Перші кроки з EasyGUI

Перед викликом функцій із бібліотеки EasyGUI на початку програмного коду слід імпортувати модуль easygui: from easygui import*

Вікно повідомлень

Функция msgbox() модуля easygui створює діалогове вікно з повідомленням і єдиною кнопкою Формат функції:

де message — текст повідомлення; title — заголовок діалогового вікна, button — напис на кнопці, image — ім’я графічного файла (у форматі .gif) для додавання зображення

Створимо діалогове вікно для привітання (рис . 9 . 1) .

Обов’язковим є тільки параметр message.

Якщо потрібно пропустити певний параметр, то значення решти параметрів задавайте за допомогою присвоєнь параметр = значення .

Створимо вітальне діалогове вікно з малюнком і кнопкою ОК, не вказуючи заголовка

Опрацювання дій користувача

Дослідимо, як віджети з бібліотеки EasyGUI реагують на дії користувача. Введемо у вікні IDLE команди:

і отримаємо реакцію: 'OK' .

Рядком 'OK' інтерпретатор Python повідомляє, що користувач натиснув кнопку OK

Функції модуля easygui завжди підтримують зворотний зв’язок, інформуючи про дії користувача — яку кнопку клацнули, які дані уведено тощо. Інформацію про дії користувача можна зберегти в змінній для подальшого опрацювання

Збережемо інформацію у змінній my_click:

Клацнемо кнопку OK, щоб закрити діалогове вікно, й у вікні IDLE запитаємо значення змінної my_click:

Ми переконалися, що дії користувача — клацання кнопки OK — зафіксовані у змінній my_click . Це дозволяє програмувати реакцію на дії користувача під час використання складніших функцій із бібліотеки EasyGUI (див. далі) .

Діалогове вікно з набором кнопок

Функція buttonbox() модуля easygui створює діалогове вікно з повідомленням і набором кнопок Формат функції: buttonbox(message, title, choices)

де: message — текст повідомлення, title — заголовок діалогового вікна, choices — список заголовків кнопок .

Створимо програму для відповіді на загадку:

Після запуску програми ми побачимо діалогове вікно з трьома кнопками (рис . 9.2) . Після натискання однієї з них з’явиться вікно з коментарем (рис . 9.3) .

Проаналізуємо хід виконання програми . Замість уведення значення змінної puzzle за допомогою оператора input() програма пропонує клацнути кнопку. Це клацання сприймається як введення даних . Текст заголовка кнопки (значення типу string) зберігається в змінній puzzle.

Вікно choicebox

Коли потрібно зробити вибір із двох-трьох варіантів, зручно використовувати функцію buttonbox() . Але якщо варіантів більше, вікно буде перевантажене кнопками, тому краще скористатись функцією choicebox() . Вікно, що створене цією функцією, містить список варіантів . Користувач може вибрати один із них подвійним клацанням або клацнувши його у списку і натиснувши кнопку OK .

Формат функції choicebox():

choicebox (message, title, choices)

де message — текст повідомлення; title — заголовок діалогового вікна, choices — список варіантів.

Виберемо персонажа для гри за допомогою діалогового вікна зі списком варіантів . Присвоїмо змінній ім’я вибраного елемента списку:

Функція choicebox() виводить діалогове вікно зі списком (рис . 9.4) . Після натискання кнопки OK змінна choice набуває значення, вибраного в списку, яке й виводиться функцією msgbox() (рис . 9 . 5) .

Введення даних

Розглянуті функції дозволяють користувачеві вибирати з обмеженої кількості запропонованих варіантів . А як надати можливість вводити власний варіант відповіді? Для цього в бібліотеці EasyGUI є функція enterbox, яка виводить вікно введення .

Синтаксис виклику функції:

де message — текст підказки, title — заголовок діалогового вікна, default — варіант, що пропонується за замовчуванням .

Створимо діалогове вікно без заголовка для введення відповіді, запропонуємо за замовчуванням варіант Ескімо (рис . 9.6) . favor = є^єгЬох('Твоє улюблене морозиво? default = 'Ескімо')

При запуску програми ми побачимо, що в полі введення вже є варіант Ескімо . Замість нього можна ввести іншу відповідь, але, якщо нас влаштовує варіант Ескімо, ми просто клацнемо кнопку OK.

Значення, отримане за допомогою функції enterbox, належить до рядкового типу. Якщо потрібно опрацьовувати числове значення, отриманий рядок слід перетворити на число за допомогою функцій int() або floatO.

Створимо програму для переведення значення температури за шкалою Фаренгейта в значення за шкалою Цельсія .

Звісно, за допомогою бібліотеки EasyGUI не створиш такого інтерфейсу, як за допомогою модуля tkinter, але її можливостей достатньо, щоб зробити, наприклад, програму для перевірки знань з інформатики .

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

1. Як з модуля easygui викликати вікно з повідомленням і єдиною кнопкою?

2. Як виглядає діалогове вікно, створене з такими параметрами: choice = ЬиЯопЬох('Виберіть рівень, 'Гра', [Т, '2', '3'])?

3. Як виглядає діалогове вікно, створене з такими параметрами: choice = ^o^^xC^^^ гравців? ', 'Гра', [Т, '2, '3'])?

4. Як засобами модуля easygui ввести рядкові дані?

5. Як засобами модуля easygui ввести ціле число?

6. Поясніть, як у програмі з прикладу 6 вибирається правильна форма слова «градус» .

Вправа 9

►► Скласти програму Калькулятор для обчислення результату виконання арифметичних дій над двома введеними числами .

У Python IDLE виберіть команду File ^ New File.

1) Запишіть оператор для завантаження модуля easygui: from easygui import*

2) Уведення чисел і обчислення виразу відбуватимуться в циклі while(rep), тобто поки значення змінної rep дорівнює True . Задайте початкове значення змінної rep:

rep = True

3) У тілі циклу while(rep): введіть два числа за допомогою діалогового вікна enterbox() (рис . 9.7):

while(rep):

4) Реалізуйте вибір арифметичної дії за допомогою відповідних кнопок діалогового вікна buttonbox() (рис . 9.8) .

Ім’я вибраного елемента списку присвойте змінній operation:

Проаналізуйте значення змінної operation і організуйте виконання потрібної арифметичної дії в операторі if ... elif ... else і виведення результату (рис. 9.9):

5) Щоб запитати в користувача, чи слід повторити обчислення, створіть діалогове вікно з кнопками Так, Ні; ім’я вибраного елемента списку присвойте змінній povtor:

Якщо змінна povtor набуває значення Ні, змінна rep отримує значення False, і цикл while(rep): припиняє роботу:

6) Додайте до списку заголовків кнопок діалогового вікна для вибору дії кнопки «//», «%» і запрограмуйте відповідні обчислення. Збережіть програму в файлі з іменем Vprava9.

Комп’ютерне тестування

Виконайте тестове завдання 9 із автоматичною перевіркою результату.

Практична робота 2

Створення програм для опрацювання списків

Завдання: скласти програму для розв’язування задачі. Задача. На автобазі 10 вантажних автомобілів «КрАЗ». Список [12, 8, 13,

9, 14, 10, 15, 16, 11, 18] містить значення маси вантажів (у тоннах), перевезених кожним автомобілем за добу.

Визначити:

а) загальну масу вантажу, перевезеного всіма автомобілями;

б) номер у списку автомобіля, що перевіз вантаж найбільшої маси;

в) кількість автомобілів, що порушили обмеження (15 т) на масу вантажу

Обладнання: комп’ютер зі встановленим середовищем програмування Python.

Хід роботи

Під час роботи з комп’ютером дотримуйтеся правил безпеки.

У Python IDLE виберіть команду File ^ New File.

1. Створіть змінну v типу список і надайте цій змінній значення, що вказані в умові задачі

2. Запишіть оператор присвоєння змінній s значення суми елементів списку v (скористайтеся функцією sum(list)) . Запишіть оператор для виведення значення змінної s .

3. Запишіть оператор присвоєння змінній m значення найбільшого елемента списку (скористайтеся функцією max(list)) . Запишіть оператор для виведення значення змінної m

4. Запишіть оператор присвоєння змінній n індексу найбільшого елемента списку (скористайтеся методом list.index()). Запишіть оператор для виведення значення змінної n .

5. Для запобігання пошкодженню дорожнього покриття маса вантажу, що перевозить автомобіль, не має перевищувати 15 тонн . Скористайтесь алгоритмом визначення кількості елементів із заданою властивістю (див . § 7) .

б. Збережіть файл з іменем Практична2 .

Зробіть висновок: як опрацьовувати числові дані, що зберігаються у списках.

 

 

Це матеріал з підручника Інформатика за 7 клас Бондаренко

 




^