Інформація про новину
  • Переглядів: 1184
  • Дата: 6-10-2021, 18:40
6-10-2021, 18:40

54. Уведення даних в програму на Python

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





Попередня сторінка:  53. Обробники подій, пов'язані з елемен...
Наступна сторінка:   55. Використання вікон повідомлень в Pyth...

 

54.1.

УВЕДЕННЯ ДАНИХ ІЗ ТЕКСТОВОГО ПОЛЯ

Щоб у програмі обробити якусь інформацію, її спочатку потрібно ввести — для цього використовують елементи керування, про які піде мова далі.

Найчастіше вживаним елементом уведення даних є текстове поле, що утворюється за допомогою конструктора Entry. Для отримання значення, яке містить текстове поле, використовують метод get(). Так, для випадку, представленого на рис. 54.1 після виконання команди x=ent. get() змінна х одержить значення text.

Розглянемо використання даного методу, виконавши практичну вправу.

ВПРАВА 54.1

Завдання. Користувач має ввести у текстовому полі, скільки йому років. Після введення числа та натиснення кнопки ОК у вікні консолі має з’явитися повідомлення у форматі «Тобі 12 років», де 12 — число, введене користувачем.

1. Створіть інтерфейс програми, використовуючи наступний код (рис. 54.2):

2. Додайте до програмного коду обробник події натискання на кнопку.

У першій команді змінній х надається значення текстового поля Ent з допомогою методу get. Причому, оскільки значення змінної х має бути цілим числом, до команди Ent.get застосовано функцію int. У другому рядку виводиться повідомлення з допомогою команди print. Спочатку виводиться слово «Тобі», до нього дописується одержане із текстового поля ent значення змінноїх, далі дописується слово «років».

3. У конструкторі кнопки додайте команду виклику обробника події.

4. Перевірте, як буде працювати створена програма. Запустіть програму. У текстовому полі введіть 14. Натисніть кнопку. В результаті у вікні консолі має з’явития повідомлення: Тобі 14 років.

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

5. Додайте команди створення порожнього напису L2.

6. У коді обробника події натискання кнопки замініть команду виведення напису наступним кодом:

Тут L2 — елемент керування, до якого буде виведено напис, text — властивість виведення тексту. Після знака «дорівнює» записано той же код, що і був у команді print.

7. Запустіть програму на виконання. Введіть 14, натисніть кнопку. В результаті повідомлення має з’явитися у написі графічного вікна. Удосконалимо обробник події таким чином, аби слово «рік» відмінювалося в залежності від введеного числа. Так, якщо число закінчується на 1, але не на 11, має виводитися «рік», якщо на 2 або З або 4, але не на 12, 13, 14, має виводитися «роки», в інших випадках — «років».

8. Для врахування зазначених вище умов уведіть такий код:

У першій умові даного коду буде знайдено останню цифру числа та перевірено, чи дорівнює вона одиниці, також знайдено останні дві цифри числа та перевірено, що вони не дорівнюють 11. Якщо обидві ці умови виконуються, останнє слово буде виведено «рік».

У другій умові також буде здійснено пошук останньої цифри числа і перевірено, що вона дорівнює 2 або 3, або 4. Також буде знайдено останні дві цифри числа і перевірено, що вони не дорівнюють ні 12, ні 13, а ні 14. Якщо ця складена умова виконується, то останнє слово буде виведено «роки».

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

9. Запустіть програму на виконання та перевірте її роботу при врахуванні різних умов.

Знайомство з іншими можливостями використання текстових полів розглянемо, виконавши завдання наступної вправи.

ВПРАВА 54.2

Завдання. Створити програму, що містить вікно реєстрації учасників змагань відповідно до наведеного зразка (рис. 54.3). Після введення даних у текстові поля та натиснення кнопки Зареєструвати дані записуються до текстового напису, розташованого під кнопкою, а текстові поля очищаються. При подальшому введенні даних і натисненні кнопки Зареєструвати дані розташовуються під попереднім записом. 1 2 3 4

1. Уведіть команди імпорту модуля tkinter та створення графічного вікна із заголовком Учасники змагань та з розмірами 300 на 400.

2. Додайте команди створення написів Прізвище, Ім’я та По батькові, надайте їм імена Pr, Іт, РЬ відповідно.

3. Додайте команди створення текстових полів, що мають імена Pr_Ent, lm_Ent, Pb Ent.

4. Додайте команди створення кнопки Зареєструвати, що має ім’я Btn.

5. Додайте команди виведення порожнього напису для додавання реєстраційних даних. Розташуйте цей напис під кнопкою Зареєструвати.

6. Уведіть код обробника події натискання кнопки.

З даного коду видно, що перший рядок обробника події з’єднує через пробіл прізвище, ім’я та по батькові, введені до відповідних текстових полів. У другому рядку одержане значення присвоюється напису, розташованому під кнопкою.

7. Запустіть програму на виконання. Введіть Петренко Сергій Степанович. Натисніть Зареєструвати. В результаті під кнопкою має з'явитися введений напис.

Далі розглянемо, щоб при натисненні кнопки Зареєструвати також було видалено введені написи.

Для вилучення написів із текстового поля використовують метод delete (first, last). Цей метод видаляє символ за вказаним індексом first. При цьому нумерація символів починається з нуля. Параметр last є необов’язковим і вказує на номер індексу, до якого здійснюється видалення. Якщо в якості другого параметра вказати значення END, видалення здійснюється до кінця тексту. Отже, для видалення всього тексту із деякого текстового поля Ent необхідно скористатися командою: Ent.delete(0, END).

8. Додайте до обробника події натискання кнопки команди вилучення тексту з кожного текстового поля:

У даних кодах на першому місці вказано імена текстових полів, далі, через крапку, — метод delete з відповідними параметрами.

9. Ще раз запустіть програму на виконання. Введіть Петренко Сергій Степанович, натисніть Зареєструвати, тепер написи з текстових полів мають зникнути. Введіть до них інший напис: Антонюк Оксана Михайлівна. Натисніть Зареєструвати. В результаті попередній напис буде замінено на новий.

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

10. Змініть програмний код у формуванні значення змінної txt. Для цього додайте після знака «дорівнює» txt+, що означає додати до наявного вже значення змінної txt те, що вказано після знака «плюс». В кінці команди додайте символи "\п", які означають перехід на наступний рядок:

11. Ще раз запустіть програму. Введіть прізвище, ім’я та по батькові, натисніть Зареєструвати. В даному випадку у вікні консолі має з’явитися помилка, пов’язана зі змінною txt.

12. Виправте помилку. Для цього необхідно надати початкове значення змінній txt перед обробником події: txt="". Також потрібно у другому рядку функції обробника події записати команду global txt.

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

13. Ще раз запустіть програму на виконання. Введіть Петренко Сергій Степанович. Натисніть Зареєструвати. Введіть ще дані: Адаменко Оксана Михайлівна, знову натисніть Зареєструвати. Тепер другий уведений напис має з’явитися під попереднім, і написи з текстових полів вилучено.

54.2.

ВІКНО ВВЕДЕННЯ ДАНИХ

Уведення даних також можна організовувати з допомогою діалогових вікон. Для реалізації попереднього прикладу дані можна вводити не з допомогою текстових полів, а з використанням наступних діалогових вікон, що будуть з’являтися один за одним (рис. 54.4).

У цьому випадку у графічному вікні вже не буде текстових полів та відповідних до них написів. Після натиснення кнопки Зареєструвати має з’явитися перше вікно, в якому необхідно ввести прізвище, після введення прізвища і натиснення кнопки ОК має з’явитися вікно для введення імені, а після цього — вікно для введення по батькові. Після введення даних у третьому вікні і натиснення кнопки ОК уве-

дені дані, як і раніше, мають розташовуватися у написі під кнопкою Зареєструвати.

Для створення діалогових вікон уведення даних використовують такий синтаксис:

Так, наприклад, для створення вікна, в якому необхідно ввести прізвище (рис. 54.5), можна застосувати такий програмний код:

Після введення деякого тексту до текстового поля і натискання кнопки ОК уведене значення буде надано змінній рг.

Для використання діалогових вікон уведення даних необхідно імпортувати модуль simpledialog, що входить до складу tkinter. Це можна виконати з допомогою наступного коду:

ВПРАВА 54.3

Завдання. Створіть копію програми із вправи 54.2 та виконайте в ній зміни таким чином, аби введення даних для реєстрації було виконано з допомогою вікон уведення. 1 2 3 4 5

1. Вилучіть із програми команди створення написів та текстових полів, оскільки у новій версії програми вони відсутні.

2. Також вилучіть команди очищення текстових полів у коді обробника події кнопки.

3. У другому рядку програми запишіть код імпорту модуля: simpledialog.tkinter.

4. Додайте команди, що виводять діалогові вікна для введення прізвища, імені та по батькові. Значення, що будуть уведені до даних вікон, надайте змінним рг, іт та pb відповідно (рис. 54.4).

5. Змініть код присвоєння змінній txt наступним чином:

6. Запустіть програму та перевірте правильність її виконання.

Контрольні запі/ттання та завдання

1. Як змінній надати значення тексту із текстового поля?

2. Як видалити текст із текстового поля?

3. Як створити вікно введення даних?

4. Які об’єкти графічного інтерфейсу можна використовувати для введення даних?

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

1*. Що відбувається у разі натиснення кнопки Cancel у вікні введення даних?

2*. В чому переваги та недоліки використання вікон уведення даних і текстових полів?

Завдання для досліджень

1*. Чи є обов’язковими обидва параметри в as kstring( заголовок ..запрошення)?

2*. Як до текстового поля додати деякий текст?

 

Це матеріал з підручника Інформатика 8 клас Казанцева, Стеценко (2021)

 




Попередня сторінка:  53. Обробники подій, пов'язані з елемен...
Наступна сторінка:   55. Використання вікон повідомлень в Pyth...



^