1 of 29

Організація діалога користувача з програмою

Нова українська школа

Урок 38

Інформатика 8

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.

2 of 29

Організація діалогу з користувачем

У консольному режимі ви користувалися для введення і виведення даних функціями:

призначена для введення даних із клавіатури

input()

<змінна> = input(<підказка>)

потрібна, щоб вивести текст у вікно консолі:

print()

print(<список виведення>)

Функція input() повертає об’єкт рядкового типу.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

3 of 29

Організація діалогу з користувачем

Розглянемо елементи керування, призначені для введення і виведення даних у програмі з графічним інтерфейсом. Віджет Label дозволяє виводити текстові повідомлення. Але програма має надавати користувачеві/користувачці можливість вводити дані. Це можна зробити за допомогою віджетів класу Entry.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

4 of 29

Клас Entry

Компонент Entry — це поле для введення тексту, також його можна використовувати і для виведення.

Синтаксис створення об’єкта класу Entry такий:

[змінна = )Entry([батьківський_віджет, ]

[властивість = значення])

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

5 of 29

Клас Entry

Для налаштування вигляду віджета Entry слід задати значення властивостей, спільних із віджетами класів Button і Label:

ширина і висота

у знакомісцях (кількість символів)

width, height

колір фону

bg

колір тексту

fg

параметри шрифту (тип, кегль)

font

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

6 of 29

Клас Entry

Створимо об'єкт entry1 із такими значеннями властивостей:

  • ширина текстового поля —�14 знакомісць;
  • параметри шрифту —�Arial, 18 кегль.

entry1 = Entry(root, width = 14, font = 'Arial 18')

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

7 of 29

Методи Entry

Які дії може виконувати елемент Entry у відповідь на певні події? Поміркуймо разом. Основні методи Entry:

Метод

Призначення

Приклад виклику

get()

Отримати значення, що міститься в текстовому полі

Змінній а цілого типу присвоїти значення, що міститься в полі entry1:

a = int(entry1.get())

insert(index, str)

Вивести в текстове поле

рядок str, починаючи зі знакомісця з номером index

Вивести в поле еntry1 значення змінної х:

entry1.insert(0, х)

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

8 of 29

Методи Entry

(Продовження…) Основні методи Entry

Метод

Призначення

Приклад виклику

delete(first, last)

Вилучити символи, починаючи зі знакомісця з номером first до знакомісця з номером last (нумерація символів з 0)

Очистити текстове. Щоб вилучити весь текст, як другий параметр потрібно указати END:

entry1.delete(0, END)

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

9 of 29

Методи Entry

Уведемо число до поля об’єкта entry1 і виведемо квадрат цього числа до поля об’єкта entry2. Зчитування значення з текстового поля, піднесення до квадрата і виведення результату в поле entry2 виконує функція kvadrat() — обробник події Натискання клавіші Enter.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

10 of 29

Методи Entry

Програмний код

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

11 of 29

Метод grid()

Вам уже відомі методи:

Якщо у вікні потрібно в певному порядку розмістити кілька віджетів, то швидко і правильно зробити це допоможе метод grid() (з англ. сітка). Цей пакувальник розміщує віджети в клітинках уявної таблиці.

pack()

place()

і

Призначені для розміщування віджетів у вікні.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

12 of 29

Метод grid()

Адреса кожної клітинки таблиці складається з:

row

номера рядка

column

номера стовпця

Нумерація в рядках і стовпцях починається з нуля.

Клітинки можна об’єднувати як по вертикалі, так і по горизонталі.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

13 of 29

Метод grid()

Атрибути методу grid() мають такий зміст:

номери рядка і стовпця відповідно;

row, column

ширина (в пікселах) вільного місця навколо віджета по горизонталі й по вертикалі відповідно;

padx, pady

об’єднання декількох клітинок у рядку або стовпці відповідно.

columnspan, rowspan

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

14 of 29

Метод grid()

Пронумеруємо уявні рядки й стовпці.

Наведене розташування віджетів забезпечить фрагмент коду:

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

15 of 29

Метод grid()

Уведемо арифметичний вираз до поля об’єкта entry1 і виведемо значення виразу до поля об’єкта entry2.

Для обчислення значення виразу використовується функція eval(), яка обробляє рядок клавіатурних символів так само, як і оболонка консоль Python.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

16 of 29

Метод grid()

Програмний код

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

17 of 29

Метод grid()

Отже, перевагами табличного способу розміщення є гнучкість та зручність під час розробки складного інтерфейсу.

Виклик методу grid (а також place, pack) можна записати в одному рядку з викликом конструктора тоді, коли в програмі не потрібно звертатися до цього об’єкта.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

18 of 29

Ознайомтесь з цікавою інформацією

Адель Голдберг — американська вчена в галузі інформатики, відома своєю роботою в галузі об’єктно-орієнтованого програмування і графічних інтерфейсів та розробкою мови програмування Smalltalk.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

19 of 29

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

Іноді виникає потреба вивести певне повідомлення про роботу програми в діалоговому вікні, не створюючи спеціального віджета. Пакет tkinter містить модуль messagebox, який надає доступ до вікон повідомлень.

Модуль messagebox потрібно імпортувати додатково:

from tkinter import messagebox

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

20 of 29

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

Від вибраного методу залежить вигляд піктограми у вікні повідомлення. Для генерації вікна повідомлень з кнопкою ОК цей модуль надає такі методи:

створює вікно для відображення деякої інформації;

створює вікно з повідомленням про помилку

створює вікно для відображення попереджень

messagebox.showerror()

messagebox.showinfo()

messagebox.showwarrning()

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

21 of 29

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

Синтаксис виклику методу:

messagebox.showinfo([Заголовок, ][текст])

Створимо вікно повідомлення інформаційного характеру :

messagebox.showinfo('lнфopмaцiя', 'Обчислення закінчено')

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

22 of 29

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

Напишемо обробник події Натискання на кнопку, в якому з полів об’єктів entry1 і entry2 класу Entry зчитуються значення для змінних а і b;

якщо b = 0, з’являється вікно з повідомленням про помилку

інакше — з’являється вікно зі значенням а/Ь

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

23 of 29

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

Програмний код

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

24 of 29

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

Отже, віджети для обміну інформацією та вікна повідомлень дають змогу у програмі з графічним інтерфейсом організувати діалог людини з комп’ютером.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

25 of 29

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

  1. Поясніть синтаксис створення об’єкта класу Entry. Яким атрибутам слід задати значення для налаштування вигляду віджета Entry?
  1. Опишіть основні методи об’єкта класу Entry.
  1. Як зчитати рядок з поля віджета Entry за натисканням Enter?
  1. Поясніть, у яких випадках доцільно використовувати кожен із трьох методів-пакувальників: pack, place, grid.

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

26 of 29

Розгадайте ребус

Діалог

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

27 of 29

Домашнє завдання

Проаналізувати

с. 178-184

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

28 of 29

Працюємо за комп’ютером

Сторінка

184

Розділ 5

§ 28

© Вивчаємо інформатику teach-inf.com.ua

29 of 29

Успіхів�у навчанні!

Нова українська школа

Урок 38

Інформатика 8

teach-inf.com.ua

за підручником

Бондаренко О.О. та ін.