Лекція 13. Текстове поле його функції та властивості

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

Ми пам’ятаємо, що для введення даних в командному режимі використовується функція input(), а у модулі tkinter існують спеціальні об’єкти для введення даних, такі як текстове поле, прапорець та перемикачі.

13.1 Текстове поле

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

Модуль tkinter має можливість створити текстове поле у програмі на мові Python за допомогою функції Entry():

назва_поля=Entry(назва_вікна, атрибут1…)

До текстового поля застосовуються наступні атрибути:

  • bg= колір – колір поля;
  • fg=колір – колір тексту поля;
  • font=шрифт та розмір шрифту – шрифт тексту (встановлює висоту поля);
  • width=число – ширина кнопки, зазначається у кількості знаків;
  • bd=число – ширина контуру поля, зазначається у пікселях.

Наприклад, ми маємо вікно Window1, розміри вікна 370×300, колір нехай буде чорний. Створимо в ньому текстове поле білого кольору з шириною у 30 знаків, а шрифтом Times 13. Розмістимо його в 50 пікселів від лівого краю та в 100 від верхнього краю. Ось як це буде виглядати у програмному коді:

Запустимо програму та побачимо що з цього вийде (мал. 24).

13.2 Отримання даних та створення повноцінних програм

Саме по собі текстове поле не може використовуватися для отримання даних, поле – лише допоміжний об’єкт. Тобто, entryl – це лише назва об’єкта, а не назва змінної, яка містить дані введені у це поле. Для отримання даних з поля використовується спеціальний метод get().

Застосовується він так:

назва поля/прапорця/перемикача.get()

Тобто, entryl – це назва поля, а entryl.get() – це значення цього поля. Я думаю, що на прикладі буде зрозуміліше.

Отже, нехай ми маємо те ж вікно i те ж поле, Тепер створимо кнопку з текстом “Start” та розмістимо її в 170 пікселях від лівого краю та в 130 від верхнього. Присвоїмо їй подію Button-1, при виконанні якої буде створюватися вікно повідомлення із даними, які ввів користувач. Заголовком вікна повідомлення зробимо “Дані користувача”. Ось, як це буде виглядати:

Як ви можете бачити замість повідомлення в функції messagebox.showinfo() було встановлено дані отримані з текстового поля. Зверніть увагу! Лапки в даному випадку ставити зовсім не потрібно, так як за замовчуванням дані текстового поля є рядком тексту. Якщо потрібно отримати числа (цілі або дійсні) – потрібно використати функції int() або float() відповідно.

Маємо наступне вікно (мал. 25).

Ну і звичайно давайте розглянемо щось більш складніше. Нехай ми матимемо те саме вікно з тими самими параметрами. Лише додамо до нього напис із початковим текстом “Введіть дані” який буде розміщено в 150-ти пікселях від лівого краю та в 50-ти від верхнього. В залежності від того, що введе користувач, воно буде відображатися замість напису “Введіть дані” (звичайно після натискання кнопки). Так це повинно виглядати у коді:

Як ви бачите, в даному випадку ми плануємо вносити змінну тексту напису. Зміна, або присвоєння одного атрибуту об’єкту застосовується так:

ім’я об’єкта [назва атрибуту”]=значення

Отже, після натискання кнопки, текст напису буде дорівнювати даним отриманим з текстового поля. Для прикладу запустимо програму і введемо “Привіт світ!” (мал. 26)

Для створення більш складних задач нам буде потрібно згадати програмування у командному інтерфейсі, адже всі дії з даними та конструкції можна застосувати до даних у графічному інтерфейсі.

Давайте вдосконалимо нашу програму, щоб вона була цікавішою. Нехай користувач буде вводити числа в наше поле і якщо це число більше 0 то буде виводитися напис “Число більше 0”, якщо менше то “Число менше 0” і відповідно “Число дорівнює 0”. Отже, маємо:

Мал. 27

Як ми бачимо, в залежності від того 

яким буде значення дійсного числа, яке введе користувач атрибут text напису label буде змінюватися по різному (мал. 27).

Контрольні питання

1. Дайте визначення поняттю текстове поле.

2. Які атрибути можна застосувати для поля?

3. Який метод слугує для отримання даних з текстового поля?

Практичні завдання

1. Створіть новий файл Python та підключіть відповідний модуль. Створіть нове вікно світло червоного кольору із розмірами 600 на 700 пікселів із забороною змінювати розміри вікна. Створити текстове поле (всі атрибути встановити за власним бажанням), кнопку поруч із текстовим полем (текст “Ок”, колір білий, шрифт “Calibri 13”), та напис із початковим текстом «Ви нічого не ввели». Після натискання на кнопку текст напису повинен змінитися на введений користувачем.

2. Створіть вікно жовтогарячого кольору з розмірами 600х600 та з заголовком “Перше вікно”. Створіть текстове поле будь-якого кольору. Ширина поля 30 знаків та шрифт “Calibri 12”. Створіть напис, колір тексту темно-синій, шрифт аналогічний полю. При натисканні правою клавішею по області вікна, текст напису буде змінюватися на введений користувачем та виводитися на екран вікно повідомлення з заголовком “Підтвердження події” та з змістом ” Дія виконана!”

3. Створіть вікно з розмірами 875×578 з заголовком «Це є вікно :)». Створіть текстове поле з шириною у 35 знаків, та розмістити його на 100 пікселів від лівого краю та на 100 пікселів від верхнього краю. В поле користувач буде вводити ціле число. При натисканні правою клавішею миші по області поля на екран буде виводитися вікно повідомлення із добутком введеного числа на нього самого. Заголовок вікна повідомлення та колір фону головного вікна встановити самостійно.