Текстовий інтерфейс заснований на використанні тексту, текстовому наборі команд та текстовій навігації. Додатки, що використовують текстовий інтерфейс, називають консольними програмами.
Графічний інтерфейс користувача (ГІК, англ. GUI, Graphical user interface) — тип інтерфейсу, який дає змогу користувачам взаємодіяти з електронними пристроями через графічні зображення та візуальні вказівки.
Бібліотека EasyGUI надає можливість швидко створювати зручний графічний інтерфейс із використанням вікон виведення повідомлень, кнопкових меню, діалогових вікон та зображень.
Для установки EasyGUI на твій комп'ютер завантаж архів програми з офіційного сайта easygui.sourceforge.net. Розпакуй архів і перенеси папку easygui у папку Рython36/lib.
Зверни увагу!
У папці easygui знаходиться файл easygui.ру. Відкривши цей файл, ти побачиш список — меню візуальних компонентів бібліотеки easygui. Можна виконати подвійний клік по назві компонента і подивитися, як він працює.
Для імпортування модуля EasyGUI на початку програмного коду слід написати рядок:
from easygui import*
from easygui import*
або
import easygui
Вікно повідомлень
Функция msgbox() модуля EasyGui створює інформаційне діалогове вікно з повідомленням і єдиною кнопкою ОК. Синтаксис виклику функції:
msgbox(message, <title, button, image>)
де: message – текст повідомлення; title – заголовок діалогового вікна, button – напис на кнопці, image – ім’я графічного файлу (у форматі gif) для додавання зображення.
msgbox(message, <title, button, image>)
де: message – текст повідомлення; title – заголовок діалогового вікна, button – напис на кнопці, image – ім’я графічного файлу (у форматі gif) для додавання зображення.
Приклад:
Створити діалогове вікно для привітання.
message = Вітаю!'
msgbox(message, 'Привітання', 'OK', 'python.gif')
message = Вітаю!'
msgbox(message, 'Привітання', 'OK', 'python.gif')
Зверни увагу!
Обов’язковим є тільки параметр message. Якщо ж ви хочете пропустити певний параметр, то для параметрів, які слідують за пропущеним, значення задавайте за допомогою присвоєння параметр = значення.
Приклад:
Створити діалогове вікно для привітання, не вказуючи заголовку. Кнопка «ОК» створюється за замовчуванням.
msgbox('Вітаю!', image = 'python.gif')
msgbox('Вітаю!', image = 'python.gif')
Опрацювання дій користувача
Як модуль EasyGui реагує на дії користувача? Виконаємо у вікні IDLE команди:
>>> from easygui import*
>>>msgbox("Вітаю!")
І отримаємо реакцію:
'OK'
Рядком 'OK' інтерпретатор Python і модуль EasyGui повідомляють, що користувач натиснув кнопку OK. Модуль EasyGui завжди підтримує зворотний зв’язок, інформуючи про дії користувача — по якій кнопці клікнули, які дані уведені тощо. Інформацію про дії користувача можна зберегти у змінній для подальшого опрацювання. Збережемо інформацію у змінній my_click:
>>> my_click = msgbox (" Вітаю!")
Клікні по кнопці OK, щоб закрити діалогове вікно, і у вікні IDLE запитай значення змінної my_click :
>>> my_click
'OK'
Ми переконались, що дії користувача — клік по кнопці OK — зафіксовані в в змінній my_click.
>>> from easygui import*
>>>msgbox("Вітаю!")
І отримаємо реакцію:
'OK'
Рядком 'OK' інтерпретатор Python і модуль EasyGui повідомляють, що користувач натиснув кнопку OK. Модуль EasyGui завжди підтримує зворотний зв’язок, інформуючи про дії користувача — по якій кнопці клікнули, які дані уведені тощо. Інформацію про дії користувача можна зберегти у змінній для подальшого опрацювання. Збережемо інформацію у змінній my_click:
>>> my_click = msgbox (" Вітаю!")
Клікні по кнопці OK, щоб закрити діалогове вікно, і у вікні IDLE запитай значення змінної my_click :
>>> my_click
'OK'
Ми переконались, що дії користувача — клік по кнопці OK — зафіксовані в в змінній my_click.
Діалогове вікно з набором кнопок
Функция buttonbox() модуля EasyGui створює інформаційне діалогове вікно з повідомленням і набором кнопок. Синтаксис виклику функції:
buttonbox (message, title, choices)
де: message — текст повідомлення; title — заголовок діалогового вікна, choices — список заголовків кнопок. Список choices визначає кількість кнопок, розміщених у вікні buttonbox.
buttonbox (message, title, choices)
де: message — текст повідомлення; title — заголовок діалогового вікна, choices — список заголовків кнопок. Список choices визначає кількість кнопок, розміщених у вікні buttonbox.
Приклад:
Створити діалогове вікно для відповіді на загадку:
from easygui import*
puzzle = buttonbox("Фарбоване коромисло через річку зависло. Що це?", “”, ['Міст', 'Веселка', 'Електродроти'] )
msgbox ("Ви обрали " + puzzle, "Ваша відповідь").
Збережемо і виконаємо програму. Ми побачимо діалогове вікно з трьома кнопками:
from easygui import*
puzzle = buttonbox("Фарбоване коромисло через річку зависло. Що це?", “”, ['Міст', 'Веселка', 'Електродроти'] )
msgbox ("Ви обрали " + puzzle, "Ваша відповідь").
Збережемо і виконаємо програму. Ми побачимо діалогове вікно з трьома кнопками:
Далі, після натискання на вибрану кнопку, з’явиться вікно:
Проаналізуємо хід виконання програми. Клік по кнопці сприймається як введення даних. Заголовок кнопки (значення типу string) зберігається в змінній puzzle. Ми могли б ввести значення для змінної puzzle за допомогою оператора input(), але замість цього програма пропонує клікнути по кнопці. Саме для цього і призначені GUI-інтерфейси.
Але як користувач дізнається, чи правильно він відгадав загадку?
Приклад:
Потрібно проаналізувати значення змінної puzzle.
from easygui import*
riddle = buttonbox("Фарбоване коромисло через річку зависло. Що це?","Загадка", ['Міст', 'Веселка', 'Електродроти'])
if (puzzle =='Веселка'):
msgbox ("Молодець! Це " + puzzle, "Ваша відповідь")
else:
msgbox ("Ні, це не " + puzzle, "Ваша відповідь")
riddle = buttonbox("Фарбоване коромисло через річку зависло. Що це?","Загадка", ['Міст', 'Веселка', 'Електродроти'])
if (puzzle =='Веселка'):
msgbox ("Молодець! Це " + puzzle, "Ваша відповідь")
else:
msgbox ("Ні, це не " + puzzle, "Ваша відповідь")
Вікно choicebox
Діалогове вікно choicebox містить меню зі списком команд. Користувач може виконати команду, вибравши її зі списку і натиснувши кнопку “Ok”, або подвійним кліком по обраній команді.
Синтаксис виклику функції EasyGui’s choicebox():
choicebox (message, title, choices)
де: message – текст повідомлення; title – заголовок діалогового вікна, choices –
список команд
Синтаксис виклику функції EasyGui’s choicebox():
choicebox (message, title, choices)
де: message – текст повідомлення; title – заголовок діалогового вікна, choices –
список команд
Приклад:
Присвоїти змінній ім’я вибраного елемента списку.
from easygui import*
msg ="Виберіть персонажа гри"
title = "Вибір героя"
choices = ["Птах", "Заєць", "Злюка","Кажан" ]
button="ok"
choice = choicebox(msg, title, choices)
if (choice=="Птах"): image="3.gif"
elif (choice=="Заєць"): image="2.gif"
elif (choice=="Кажан"): image="герой1.gif"
else:image="злой.gif"
msgbox ("Ваш герой " + choice, "Ваш вибір",button,image)
from easygui import*
msg ="Виберіть персонажа гри"
title = "Вибір героя"
choices = ["Птах", "Заєць", "Злюка","Кажан" ]
button="ok"
choice = choicebox(msg, title, choices)
if (choice=="Птах"): image="3.gif"
elif (choice=="Заєць"): image="2.gif"
elif (choice=="Кажан"): image="герой1.gif"
else:image="злой.gif"
msgbox ("Ваш герой " + choice, "Ваш вибір",button,image)
Введення даних
Поле введення діалогового вікна enterbox надає користувачеві можливість вводити власний варіант відповіді. Синтаксис виклику функції EasyGui’s enterbox():
змінна = enterbox(message, title, default)
де: message – текст підказки, title – заголовок діалогового вікна, default – варіант, що пропонується за замовчуванням.
змінна = enterbox(message, title, default)
де: message – текст підказки, title – заголовок діалогового вікна, default – варіант, що пропонується за замовчуванням.
Приклад:
Створити діалогове вікно для введення відповіді.
import easygui
flavor = enterbox("Твоє улюблене морозиво?", "Запитання")
msgbox ("Твоя відповідь " + flavor)
import easygui
flavor = enterbox("Твоє улюблене морозиво?", "Запитання")
msgbox ("Твоя відповідь " + flavor)
У деяких ситуаціях певні відповіді можна очікувати частіше за інші, тому відповідь користувача можна передбачити і запропонувати в поле для введення значення за замовчуванням (default). Якщо користувач не згодний із запропонованим варіантом, він уведе своє значення. Пам'ятай, що при пропуску параметрів потрібно указувати, якому параметру присвоюється наступне значення.
Приклад:
Створити діалогове вікно без заголовка для введення відповіді, запропонувати за замовчуванням варіант «Ескімо»
import easygui
flavor = enterbox("Твоє улюблене морозиво?", default = 'Ескімо')
msgbox ("Ви вибрали " + flavor)
import easygui
flavor = enterbox("Твоє улюблене морозиво?", default = 'Ескімо')
msgbox ("Ви вибрали " + flavor)
При запуску програми ми побачимо, що в поле введення вже є варіант «Ескімо». Замість нього можна ввести будь-яку іншу відповідь, але, якщо нас влаштовує варіант «Ескімо», ми просто клікнемо по кнопці «OK».
Введення числових значень
Значення, що отримане за допомогою функції enterbox(), належить до рядкового типу. Якщо потрібно отримати числове значення, отриманий рядок потрібно перетворити за допомогою функцій int() або float().
Приклад:
Створити програму, яка переводить значення температури за шкалою Фаренгейта в значення за шкалою Цельсія
from easygui import*
far = int(enterbox("Значення за шкалою Фаренгейта?", default = '0'))
cel = int((far - 32) / 1.8) #
if abs(cel)>=11 and abs(cel)<=14: grad = 'градусів'
elif (abs(cel) % 10>=2 and abs(cel) % 10<=4): grad = 'градуси'
elif abs(cel) % 10==1: grad = 'градус'
else: grad = 'градусів'
msgbox ("Значення за шкалою Цельсія " + str(cel)+ grad)
from easygui import*
far = int(enterbox("Значення за шкалою Фаренгейта?", default = '0'))
cel = int((far - 32) / 1.8) #
if abs(cel)>=11 and abs(cel)<=14: grad = 'градусів'
elif (abs(cel) % 10>=2 and abs(cel) % 10<=4): grad = 'градуси'
elif abs(cel) % 10==1: grad = 'градус'
else: grad = 'градусів'
msgbox ("Значення за шкалою Цельсія " + str(cel)+ grad)
Приклад:
Гра «Вгадай-но» із застосуванням модуля EasyGui.
import random, easygui
secret = random.randint(1, 100)
guess = 0
tries = 0
easygui.msgbox("""Привіт! Вгадай число від 1 дo 100. У тебе є 7 спроб.""")
while guess != secret and tries < 7:
guess = easygui.integerbox("Твоя спроба?")
if guess < secret: easygui.msgbox(" Мало!")
elif guess > secret: easygui.msgbox(Забагато!")
import random, easygui
secret = random.randint(1, 100)
guess = 0
tries = 0
easygui.msgbox("""Привіт! Вгадай число від 1 дo 100. У тебе є 7 спроб.""")
while guess != secret and tries < 7:
guess = easygui.integerbox("Твоя спроба?")
if guess < secret: easygui.msgbox(" Мало!")
elif guess > secret: easygui.msgbox(Забагато!")
tries = tries + 1
if guess == secret:
easygui.msgbox("Вітаю! Число вгадане!")
else:
if guess == secret:
easygui.msgbox("Вітаю! Число вгадане!")
else:
easygui.msgbox("Спроб більше немає. Задумане число " + str(secret))
Джерела:
Інформатика : підруч. для 7 кл. закл. загал. серед. освіти / [О. О. Бондаренко, В. В. Ластовецький, О. П. Пилипчук, Є. А. Шестопалов]. — Харків : Вид-во «Ранок», 2020.