Kivy – кроссплатформенная разработка GUI

онлайн тренер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

 


Введение

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 Используются для рисования перед и после дочерних виджетов.

Пример простого приложения

python
from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Привет, Kivy!') MyApp().run()

Пример с кнопкой и обработчиком

python
from kivy.app import App from kivy.uix.button import Button class MyApp(App): def build(self): btn = Button(text='Нажми меня') btn.bind(on_press=self.on_button_press) return btn def on_button_press(self, instance): print('Кнопка нажата!') MyApp().run()

Установка

bash
pip install kivy

Для Android-приложений:

bash
pip install buildozer

Особенности

Возможность Описание
Кроссплатформенность Поддержка ПК и мобильных платформ.
Мультитач Поддержка жестов, свайпов, вращения и масштабирования.
Аппаратное ускорение Рендеринг через OpenGL.
Адаптивный интерфейс Интерфейс масштабируется под экран.
Интеграция с Python Полный доступ к логике Python.

Заключение

Kivy — это универсальный инструмент для создания адаптивных и мощных GUI-приложений на Python. Он позволяет разрабатывать под Android и другие платформы без необходимости изучать Java или Kotlin. С помощью Kivy можно быстро создать интерфейс, обрабатывать события и развернуть приложение на мобильных устройствах.