Віджети Button, Label, Entry

У цьому уроці розглянемо докладніше три найпростіші та найпопулярніші віджети GUI – кнопку, мітку та однорядкове текстове поле. У tinter об'єкти цих елементів інтерфейсу породжуються відповідно від класів Button, Label і Entry.

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

У Tkinter існує три способи конфігурування властивостей віджетів: в момент створення об'єкта, за допомогою методу config(), він configure(), шляхом звернення до властивості як до елемента словника.

Button – кнопка

Найважливішими властивостями віджету класу Button є text, за допомогою якого встановлюється напис на кнопці, та command для встановлення дії, тобто того, що відбуватиметься при натисканні на кнопку. За замовчуванням розмір кнопки відповідає ширині та висоті тексту, проте за допомогою властивостей width та height ці параметри можна змінити. Одиницями виміру у разі є знайоместа. Такі властивості як bg, fg, activebackground та activeforeground визначають відповідно колір фону та тексту, колір фону та тексту під час натискання (і встановлення курсора миші над кнопкою).

Тут властивість command встановлюється методом config(). Однак можна було зробити і так: b1['command'] = change. Ось так буде виглядати кнопка після запуску програми та після натискання на неї:

Label – мітка

Віджет Label просто відображає текст у вікні та служить в основному для інформаційних цілей (виведення повідомлень, підпис інших елементів інтерфейсу). Властивості мітки багато в чому схожі зтакими у кнопки. Однак у міток немає опції command. Клік по мітці не обробляється Tkinter. Приклад об'єкта типу Label розглянемо властивість font – шрифт.

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

Також як font властивість bd є не тільки у мітки. З його допомогою регулюється розмір кордонів (одиниця виміру – піксель):

віджети

Буває, що мітки та кнопки не надають змінним, якщо потім до них у коді не доводиться звертатися. Їх створюють від класу і одразу розміщують:

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

Entry – однорядкове текстове поле

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

Властивості екземплярів Entry багато в чому схожі з двома попередніми віджетами. А ось методи – ні. З текстового поля можна взяти текст. За цю дію відповідає метод get(). У текстове поле можна вставити текст методом insert(). Можна також видалити текст методом delete().

Метод insert() приймає позицію, у яку треба вставляти текст, і текст.

призведе до того, що після кожного натискання на кнопку буде вставлятися нова фраза "Tkinter - GUI" перед рядком, що вже існує в полі.

Якщо 0 в insert() замінити на константу END, то вставлятиметься на кінець. Можна вказати будь-яке число-індексзнайоместа, тоді вставка буде проводитися кудись у середину рядка.

Метод delete() приймає один чи два аргументи. У першому випадку видаляється один символ у цій позиції. У другому - зріз між двома зазначеними індексами, не включаючи останній. Якщо потрібно повністю очистити поле, то першим аргументом має бути 0, другим – END.

Практична робота

Напишіть програму, що складається із семи кнопок, кольори яких відповідають кольорам веселки. При натисканні на ту чи іншу кнопку в текстове поле повинен вставлятися код кольору, а позначку – назва кольору.

Коди кольорів у шістнадцятковому кодуванні: #ff0000 – червоний, #ff7d00 – помаранчевий, #ffff00 – жовтий, #00ff00 – зелений, #007dff – блакитний, #0000ff – синій, #7d00ff – фіолетовий.

Приблизно має вийти так:

button

Для вирівнювання рядка центром у текстовому полі використовується властивість justify зі значенням CENTER.

Курс із прикладами рішень практичних робіт: android-додаток, pdf-версія.