Видимые виджеты служат для создания элементов пользовательского интерфейса. Типичными представителями таких виджетов являются кнопки, выпадающие списки, вкладки и т. п. Невидимые виджеты используются для позиционирования видимых элементов в окне приложения. Любой инструментарий графического интерфейса пользователя поставляется с набором виджетов. Фреймворк Kivy и библиотека KivyMD имеет множество встроенных виджетов.
Работа со свойствами виджетов в Kivy имеет свои особенности. Например, с параметрами свойств по умолчанию они располагаются в центре элемента, к которому привязаны (например, к главному окну приложения) и занимают всю его площадь. Однако при разработке интерфейса пользователя необходимо размещать виджеты в разных частях экрана, менять их размеры, цвет и ряд других свойств. Для этого каждый виджет имеет набор свойств и методов, которые разработчик может устанавливать по своему усмотрению. Кроме того, разработчик имеет возможность вкладывать один виджет в другой и таким образом строить «дерево виджетов». Теперь можно на простых примерах познакомиться с основными видимыми виджетами Kivy.
2.5. Виджеты пользовательского интерфейса (UX-виджеты)
У фреймворка Kivy имеется небольшой набор видимых виджетов:
– Label – метка или этикетка (текстовая надпись в окне приложения);
– Button – кнопка;
– Checkbox – флажок;
– Image – изображение;
– Slider – слайдер;
– ProgressBar – индикатор;
– TextInput – поле для ввода текста;
– ToggleButton – кнопка «переключатель»;
– Switch – выключатель;
– Video – окно для демонстрации видео из файла;
– Widget – пустая рамка (поле).
Это достаточно скромный, базовый набор визуальных элементов, но мы именно с них начнем знакомство с Kivy.
Примечание.
Более богатый набор визуальных элементов реализован в библиотеке KivyMD. О них будет подробно рассказано в последующих главах.
2.5.1. Виджет Label – метка
Виджет Label используется для отображения текста в окне приложения. Он поддерживает вывод символов как в кодировке ascii, так и в кодировке unicode. Покажем на простом примере, как можно использовать виджет Label в приложении. Для этого создадим файл с именем K_Label_1.py и напишем в нем следующий код (листинг 2.19).
Листинг 2.19. Пример использования виджета Label (модуль K_Label_1.py)
# модуль K_Label_1.py
from kivy. app import App
from kivy.uix.label import Label
class MainApp (App):
…… def build (self):
…… … … L = Label (text=«Это текст», font_size=50)
…… … … return L
MainApp().run ()
В этом модуле мы создали объект-метку L на основе базового класса Label. Для метки в свойстве text задали значение, который нужно вывести на экран – «Это текст», а в свойстве font_size задали размер шрифта -50. После запуска данного приложения получим следующий результат (рис.2.17).
Рис. 2.17.Результаты выполнения приложения из модуля K_Label_1.py
В данном примере объект Label был создан в коде на языке Python. Реализуем тот же пример с использованием языка KV. Для этого создадим файл с именем K_Label_2.py и напишем в нем следующий код (листинг 2.20).
Листинг 2.20. Пример использования виджета Label (модуль K_Label_2.py)
# модуль K_Label_2.py
from kivy. app import App
from kivy.lang import Builder
KV = «»»
Label:
…… text: «Это текст»
…… font_size: 50
«»»
class MainApp (App):
…… def build (self):
…… … … return Builder. load_string (KV)
MainApp().run ()
В данном примере объект Label был создан в коде на языке KV, а результат работы приложения будет таким же, как представлено на предыдущем рисунке.
Метка Label имеет ряд свойств, которые позволяют задать выводимый текст и параметры шрифта:
– text – текст, выводимый в видимую часть виджета (текстовое содержимое метки, надпись на кнопке и т.п.);
– font_size – размер шрифта;
– color – цвет шрифта;
– font_name – имя файла с пользовательским шрифтом (.ttf).
2.5.2. Виджет Button – кнопка
Кнопка Button – это элемент интерфейса, при касании которого будут выполнены запрограммированные действия. Виджет Button имеет те же свойства, что и виджет Label. Покажем на простом примере, как можно использовать виджет Button в приложении. Для этого создадим файл с именем K_Button_1.py и напишем в нем следующий код (листинг 2.21).
Листинг 2.21. Пример использования виджета Button (модуль K_Button_1.py)
# модуль K_Button_1.py
from kivy. app import App
from kivy. uix. button import Button
class MainApp (App):
…… def build (self):
…… … … btn = Button (text=«Это кнопка», font_size=50)
Читать дальше