Kivy — это бесплатный, с открытым исходным кодом Python фреймворк для быстрой разработки приложений с инновационными пользовательскими интерфейсами, такими как многоточечные приложения. Kivy может работать на Linux, Windows, macOS, Android и iOS. Он позволяет создавать приложения с одним и тем же кодом для различных платформ.
Основные принципы Kivy:
Кросс-платформенность: Один код для нескольких платформ. OpenGL ES 2: Использует OpenGL ES 2 для рендеринга, что обеспечивает хорошую производительность графики. Событийная модель: Управление приложением основано на событиях (например, нажатие кнопки, касание экрана). Kv язык: Декларативный язык для описания пользовательского интерфейса (UI).
Необходимые инструменты:
Python: Установленный Python (рекомендуется 3.7 или новее). Pip: Менеджер пакетов для Python. Kivy: Сам фреймворк Kivy.
Установка Kivy:
Рекомендуется установить Kivy в виртуальное окружение.
# Создание виртуального окружения
Python3 — m venv kivy_venv
# Активация виртуального окружения
# Linux/macOS:
Source kivy_venv/bin/activate
# Windows:
Kivy_venv\Scripts\activate
# Установка Kivy и необходимых зависимостей
Pip install kivy[full]
Структура Kivy приложения:
Обычно Kivy приложение состоит из двух основных частей:
Python код: Содержит логику приложения, обработку событий, взаимодействие с данными. Kv файл (опционально): Определяет структуру и внешний вид пользовательского интерфейса.
Пример простого Kivy приложения:
1. Python файл (main. py):
Import kivy
From kivy. app import App
From kivy. uix. label import Label
# Минимальная версия Kivy
Kivy. require(‘2.0.0’)
Class MyApp(App):
def build(self):
return Label(text=’Hello, Kivy!’)
If __name__ == ‘__main__’:
MyApp().run()
2. Запуск Приложения:
Python main. py
Этот код создаст окно с надписью “Hello, Kivy!”.
Использование Kv языка:
Kv язык позволяет отделить описание UI от логики. Создадим файл my. kv:
Kv файл (my. kv):
#:kivy 2.0.0
:
Label:
text: ‘Hello, Kivy from Kv!’
font_size: 32
pos_hint: {‘center_x’: 0.5, ‘center_y’: 0.5}
Теперь изменим Python файл:
Python Файл (main. py):
Import kivy
From kivy. app import App
From kivy. uix. widget import Widget
Kivy. require(‘2.0.0’)
Class MyRootWidget(Widget):
pass
Class MyApp(App):
def build(self):
return MyRootWidget()
If __name__ == ‘__main__’:
MyApp().run()
Kivy автоматически загрузит Kv файл с именем my. kv (имя приложения в нижнем регистре без “App”). Теперь надпись будет взята из Kv файла.
Основные виджеты Kivy:
Kivy предоставляет множество виджетов для создания UI. Вот некоторые из них:
Label: Для отображения текста. Button: Кнопка. TextInput: Текстовое поле для ввода. Image: Для отображения изображений. BoxLayout: Располагает виджеты в горизонтальном или вертикальном направлении. GridLayout: Располагает виджеты в виде сетки. RelativeLayout: Позволяет располагать виджеты относительно друг друга. ScrollView: Добавляет возможность прокрутки, если содержимое не помещается на экране.
Работа с событиями:
Kivy использует систему событий для обработки действий пользователя. Можно привязывать функции к определенным событиям (например, нажатие кнопки).
From kivy. uix. button import Button
Class MyButton(Button):
def on_press(self):
print("Button pressed!")
# В Kv Файле:
# :
# text: "Press me!"
# on_press: root. on_button_press()
Создание Макета UI:
Используйте Layout виджеты (BoxLayout, GridLayout, RelativeLayout) для организации виджетов на экране.
Работа с сенсорным вводом (Touch Events):
Kivy поддерживает мультитач ввод. Можно отслеживать касания экрана и жесты.
Развертывание приложений:
Android: Используйте Buildozer (инструмент для упаковки Kivy приложений в APK). IOS: Требуется macOS и Xcode. Desktop (Windows, macOS, Linux): Просто запустите Python файл.
Пример с кнопкой и текстовым полем:
Python Файл (main. py):
Import kivy
From kivy. app import App
From kivy. uix. gridlayout import GridLayout
From kivy. uix. label import Label
From kivy. uix. textinput import TextInput
From kivy. uix. button import Button
Kivy. require(‘2.0.0’)
Class MyGridLayout(GridLayout):
def __init__(self, **kwargs):
super(MyGridLayout, self).__init__(**kwargs)
self. cols = 2
self. add_widget(Label(text="Name: "))
self. name = TextInput(multiline=False)
self. add_widget(self. name)
self. add_widget(Label(text="Email: "))
self. email = TextInput(multiline=False)
self. add_widget(self. email)
self. add_widget(Label(text="Comment: "))
self. comment = TextInput(multiline=True) # Allow multiple lines
self. add_widget(self. comment)
self. submit = Button(text="Submit", font_size=40)
self. submit. bind(on_press=self. pressed)
self. add_widget(Label()) # Empty Label for spacing
self. add_widget(self. submit)
def pressed(self, instance):
name = self. name. text
email = self. email. text
comment = self. comment. text
print(f"Name: {name}, Email: {email}, Comment: {comment}") # Output to console
# Clear the input fields
self. name. text = ""
self. email. text = ""
self. comment. text = ""
Class MyApp(App):
def build(self):
return MyGridLayout()
If __name__ == "__main__":
MyApp().run()
Этот код создает простое приложение с полями для ввода имени, электронной почты и комментария, а также кнопкой “Submit”. При нажатии кнопки данные выводятся в консоль и поля очищаются.
Дальнейшее изучение:
Официальная документация Kivy: Https://kivy. org/docs/ Примеры Kivy: Https://github. com/kivy/kivy/tree/master/examples Kivy Garden: Https://kivy. garden/ — коллекция виджетов и расширений, созданных сообществом.
Kivy — отличный выбор для разработки кросс-платформенных приложений на Python. Начните с простых примеров и постепенно переходите к более сложным проектам. Удачи!