Введение
Kivy — это мощный, открытый фреймворк для создания графических интерфейсов и кроссплатформенных приложений на языке Python. Он поддерживает Android, iOS, Windows, Linux и macOS, что делает его отличным выбором для разработки мобильных и настольных приложений с единым кодом.
Библиотека предоставляет инструменты для построения адаптивных интерфейсов, управления вводом с клавиатуры, мыши, сенсора и мультитача, а также включает собственный язык разметки KV для отделения логики и UI.
Основная часть
Установка Kivy
pip install kivy
Для мобильной сборки потребуется buildozer
(Android):
pip install buildozer
Простое Kivy-приложение
from kivy.app import App
from kivy.uix.button import Button
class MyApp(App):
def build(self):
return Button(text="Нажми меня")
MyApp().run()
Запуск откроет окно с кнопкой.
Структура приложения
-
App
— главный класс, запускающий интерфейс -
Widget
— базовый элемент интерфейса -
Layout
— контейнеры (BoxLayout, GridLayout и др.) -
KV language
— декларативное описание интерфейса
Создание интерфейса с KV
main.py
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
class MyLayout(BoxLayout):
pass
class MyApp(App):
def build(self):
return MyLayout()
MyApp().run()
my.kv
<MyLayout>:
orientation: 'vertical'
Button:
text: 'Привет'
Button:
text: 'Мир'
Обработка событий
def on_button_press(self, instance):
print("Кнопка нажата")
Привязка в KV:
Button:
text: 'Нажми'
on_press: app.on_button_press(self)
Виджеты и элементы UI
-
Button — кнопка
-
Label — текст
-
TextInput — ввод текста
-
Slider — ползунок
-
Switch — переключатель
-
Image — изображение
-
ScreenManager — управление экранами и переходами
Адаптивная верстка и Layout
-
BoxLayout
— по оси -
GridLayout
— сетка -
FloatLayout
— абсолютное позиционирование -
AnchorLayout
,StackLayout
— продвинутые схемы
Работа с Android (через Buildozer)
Создание конфигурации:
buildozer init
Сборка APK:
buildozer -v android debug
Тест на устройстве:
buildozer android deploy run
Расширенные возможности
-
Поддержка мультитача и жестов
-
Анимации и переходы (
Animation
) -
Звуки и музыка (
SoundLoader
) -
Работа с базами данных и API
Практические проекты на Kivy
-
Калькулятор
-
Менеджер задач
-
Кроссплатформенная чат-программа
-
Учебные игры и тренажёры
-
Контроллер умного дома
Описание всех ключевых функций и классов библиотеки Kivy
для Python
Инициализация и структура приложения
Класс / Функция | Описание |
---|---|
App |
Базовый класс любого приложения Kivy. Нужно наследовать и реализовать метод build() . |
App.run() |
Запускает основное приложение. |
App.stop() |
Завершает выполнение приложения. |
build() |
Метод, в котором создается и возвращается корневой виджет. |
Виджеты и интерфейс
Класс | Описание |
---|---|
Widget |
Базовый класс всех элементов интерфейса. |
Label |
Виджет для отображения текста. |
Button |
Кнопка, реагирующая на нажатия. |
TextInput |
Поле ввода текста. |
BoxLayout |
Контейнер, размещающий дочерние элементы по вертикали или горизонтали. |
GridLayout |
Контейнер с таблицей (сетка строк и столбцов). |
FloatLayout |
Размещает элементы по координатам. |
ScreenManager |
Управляет переключением между экранами. |
Screen |
Отдельный экран в ScreenManager . |
Обработка событий
Метод | Описание |
---|---|
on_touch_down(touch) |
Вызывается при нажатии (касании) на экран. |
on_touch_move(touch) |
Вызывается при перемещении пальца или курсора. |
on_touch_up(touch) |
Вызывается при отпускании. |
on_press |
Событие нажатия на кнопку. |
on_release |
Событие отпускания кнопки. |
bind(property=callback) |
Привязывает обработчик к свойству или событию. |
Работа с KV-языком
Компонент | Описание |
---|---|
.kv файл |
Отдельный файл с декларативным описанием интерфейса. |
Builder.load_file('file.kv') |
Загружает интерфейс из .kv файла. |
Builder.load_string(kv_string) |
Загружает интерфейс из строки. |
ids |
Словарь с доступом к элементам, заданным в kv-файле через id . |
Привязка свойств и реактивность
Класс | Описание |
---|---|
ObjectProperty , StringProperty , NumericProperty , BooleanProperty |
Специальные свойства, отслеживающие изменения и автоматически обновляющие интерфейс. |
@property , @<name>.setter |
Обычные Python-свойства для обработки логики. |
Clock.schedule_once(func, delay) |
Отложенный вызов функции через delay секунд. |
Clock.schedule_interval(func, interval) |
Периодическое выполнение функции. |
Работа с графикой
Класс / Метод | Описание |
---|---|
Canvas |
Холст для рисования. Доступен у каждого Widget . |
Rectangle , Ellipse , Line |
Основные фигуры. |
Color(r, g, b, a) |
Установка цвета. |
InstructionGroup |
Группа графических инструкций. |
canvas.before , canvas.after |
Используются для рисования перед и после дочерних виджетов. |
Пример простого приложения
Пример с кнопкой и обработчиком
Установка
Для Android-приложений:
Особенности
Возможность | Описание |
---|---|
Кроссплатформенность | Поддержка ПК и мобильных платформ. |
Мультитач | Поддержка жестов, свайпов, вращения и масштабирования. |
Аппаратное ускорение | Рендеринг через OpenGL. |
Адаптивный интерфейс | Интерфейс масштабируется под экран. |
Интеграция с Python | Полный доступ к логике Python. |
Заключение
Kivy — это универсальный инструмент для создания адаптивных и мощных GUI-приложений на Python. Он позволяет разрабатывать под Android и другие платформы без необходимости изучать Java или Kotlin. С помощью Kivy можно быстро создать интерфейс, обрабатывать события и развернуть приложение на мобильных устройствах.