Організація діалога користувача з програмою
Нова українська школа
Урок 38
Інформатика 8
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.
Організація діалогу з користувачем
У консольному режимі ви користувалися для введення і виведення даних функціями:
призначена для введення даних із клавіатури
input()
<змінна> = input(<підказка>)
потрібна, щоб вивести текст у вікно консолі:
print()
print(<список виведення>)
Функція input() повертає об’єкт рядкового типу.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Організація діалогу з користувачем
Розглянемо елементи керування, призначені для введення і виведення даних у програмі з графічним інтерфейсом. Віджет Label дозволяє виводити текстові повідомлення. Але програма має надавати користувачеві/користувачці можливість вводити дані. Це можна зробити за допомогою віджетів класу Entry.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Клас Entry
Компонент Entry — це поле для введення тексту, також його можна використовувати і для виведення.
Синтаксис створення об’єкта класу Entry такий:
[змінна = )Entry([батьківський_віджет, ]
[властивість = значення])
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Клас Entry
Для налаштування вигляду віджета Entry слід задати значення властивостей, спільних із віджетами класів Button і Label:
ширина і висота
у знакомісцях (кількість символів)
width, height
колір фону
bg
колір тексту
fg
параметри шрифту (тип, кегль)
font
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Клас Entry
Створимо об'єкт entry1 із такими значеннями властивостей:
entry1 = Entry(root, width = 14, font = 'Arial 18')
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Методи Entry
Які дії може виконувати елемент Entry у відповідь на певні події? Поміркуймо разом. Основні методи Entry:
Метод
Призначення
Приклад виклику
get()
Отримати значення, що міститься в текстовому полі
Змінній а цілого типу присвоїти значення, що міститься в полі entry1:
a = int(entry1.get())
insert(index, str)
Вивести в текстове поле
рядок str, починаючи зі знакомісця з номером index
Вивести в поле еntry1 значення змінної х:
entry1.insert(0, х)
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Методи Entry
(Продовження…) Основні методи Entry
Метод
Призначення
Приклад виклику
delete(first, last)
Вилучити символи, починаючи зі знакомісця з номером first до знакомісця з номером last (нумерація символів з 0)
Очистити текстове. Щоб вилучити весь текст, як другий параметр потрібно указати END:
entry1.delete(0, END)
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Методи Entry
Уведемо число до поля об’єкта entry1 і виведемо квадрат цього числа до поля об’єкта entry2. Зчитування значення з текстового поля, піднесення до квадрата і виведення результату в поле entry2 виконує функція kvadrat() — обробник події Натискання клавіші Enter.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Методи Entry
Програмний код
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Метод grid()
Вам уже відомі методи:
Якщо у вікні потрібно в певному порядку розмістити кілька віджетів, то швидко і правильно зробити це допоможе метод grid() (з англ. сітка). Цей пакувальник розміщує віджети в клітинках уявної таблиці.
pack()
place()
і
Призначені для розміщування віджетів у вікні.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Метод grid()
Адреса кожної клітинки таблиці складається з:
row
номера рядка
column
номера стовпця
Нумерація в рядках і стовпцях починається з нуля.
Клітинки можна об’єднувати як по вертикалі, так і по горизонталі.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Метод grid()
Атрибути методу grid() мають такий зміст:
номери рядка і стовпця відповідно;
row, column
ширина (в пікселах) вільного місця навколо віджета по горизонталі й по вертикалі відповідно;
padx, pady
об’єднання декількох клітинок у рядку або стовпці відповідно.
columnspan, rowspan
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Метод grid()
Пронумеруємо уявні рядки й стовпці.
Наведене розташування віджетів забезпечить фрагмент коду:
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Метод grid()
Уведемо арифметичний вираз до поля об’єкта entry1 і виведемо значення виразу до поля об’єкта entry2.
Для обчислення значення виразу використовується функція eval(), яка обробляє рядок клавіатурних символів так само, як і оболонка консоль Python.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Метод grid()
Програмний код
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Метод grid()
Отже, перевагами табличного способу розміщення є гнучкість та зручність під час розробки складного інтерфейсу.
Виклик методу grid (а також place, pack) можна записати в одному рядку з викликом конструктора тоді, коли в програмі не потрібно звертатися до цього об’єкта.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Ознайомтесь з цікавою інформацією
Адель Голдберг — американська вчена в галузі інформатики, відома своєю роботою в галузі об’єктно-орієнтованого програмування і графічних інтерфейсів та розробкою мови програмування Smalltalk.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Вікно повідомлень
Іноді виникає потреба вивести певне повідомлення про роботу програми в діалоговому вікні, не створюючи спеціального віджета. Пакет tkinter містить модуль messagebox, який надає доступ до вікон повідомлень.
Модуль messagebox потрібно імпортувати додатково:
from tkinter import messagebox
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Вікно повідомлень
Від вибраного методу залежить вигляд піктограми у вікні повідомлення. Для генерації вікна повідомлень з кнопкою ОК цей модуль надає такі методи:
створює вікно для відображення деякої інформації;
створює вікно з повідомленням про помилку
створює вікно для відображення попереджень
messagebox.showerror()
messagebox.showinfo()
messagebox.showwarrning()
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Вікно повідомлень
Синтаксис виклику методу:
messagebox.showinfo([Заголовок, ][текст])
Створимо вікно повідомлення інформаційного характеру :
messagebox.showinfo('lнфopмaцiя', 'Обчислення закінчено')
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Вікно повідомлень
Напишемо обробник події Натискання на кнопку, в якому з полів об’єктів entry1 і entry2 класу Entry зчитуються значення для змінних а і b;
якщо b = 0, з’являється вікно з повідомленням про помилку
інакше — з’являється вікно зі значенням а/Ь
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Вікно повідомлень
Програмний код
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Вікно повідомлень
Отже, віджети для обміну інформацією та вікна повідомлень дають змогу у програмі з графічним інтерфейсом організувати діалог людини з комп’ютером.
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Питання для самоперевірки
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Розгадайте ребус
Діалог
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Домашнє завдання
Проаналізувати
с. 178-184
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Працюємо за комп’ютером
Сторінка
184
Розділ 5
§ 28
© Вивчаємо інформатику teach-inf.com.ua
Успіхів�у навчанні!
Нова українська школа
Урок 38
Інформатика 8
teach-inf.com.ua
за підручником
Бондаренко О.О. та ін.