Статья Kivy — Введение

Всем привет, решил сделать серию статей про Kivy и KivyMD. Я не UI разработчик, я просто умею делать приложения с помощью kivy.
Не надо ожидать того, что после этих статей вы сходу сделаете UI круче чем у google, vk и других приложений-гигантов.
Но одно я пообещать точно могу, приложения будут :love:.

Начнём!

Коротко о каждом

Kivy - python фреймворк который позволяет создавать кроссплатформенные приложения.
KivyMD - набор виджетов в стиле Google Material Design для kivy

Чтобы не оставалось вопросов

Виджет - это небольшой вспомогательный элемент/компонент приложения(например кнопка), которое выполняет определенную функцию
UI - пользовательский интерфейс

Установка kivy

Windows:
Ссылка на туториал от kivy для windows(прочитайте если есть проблемы с установкой или если хотите узнать большее)

Сначала установим зависимости:
Код:
python -m pip install docutils pygments pypiwin32 kivy_deps.sdl2==0.1.* kivy_deps.glew==0.1.*
python -m pip install kivy_deps.gstreamer==0.1.*
Если у вас python 3.5+, то так же
Код:
python -m pip install kivy_deps.angle==0.1.*
Установим kivy.
Код:
python -m pip install kivy

Linux:
Тут проблем не должно возникнуть.
Код:
sudo apt update
sudo apt install python3-kivy

Первое приложение

Чтобы создать kivy приложение вам нужно:
  1. создать класс приложения(в нашем случае MainApp) который наследует kivy класс App
  2. переопределить метод build, этот метод возвращает root виджет(т.е главный виджет), потом приложение его(root виджет) рисует/отображает.
Сейчас вам может быть непонятно что такое root виджет, подробнее я объясню это в следующей часте.
Так же в следующей части мы сделаем полноценное приложение, может даже попробуем его скомпилировать под какую-нибудь OC.
Python:
from kivy.app import App
from kivy.uix.button import Button

class MainApp(App):
    def build(self):
        button = Button(text='The first app', size_hint_x=1, size_hint_y=1)
        return button

MainApp().run()
Screenshot from 2020-11-23 13-28-19.png


Тут всё просто, создаём класс MainApp, который наследует класс App, переопределяем метод build, возвращаем кнопку.
Запустите код, если у вас появится кнопка на весть экран как на фото, то мои поздравления, вы установили kivy.

Стоит разобрать виджет button(класс Button), по умолчанию, он занимаёт 100 % от доступного ему места по оси x(за это отвечает size_hint_x) и по оси y (за это отвечает size_hint_y). Давайте попробуем сделать 2 вещи:

1) Сделаем так, чтобы кнопка занимала 100 % от ширины(ось x) и 50 % от высоты(ось y).
Код:
button = Button(text='The first app', size_hint_y=.5, size_hint_x=1)
Или проще:
Код:
button = Button(text='The first app', size_hint=(1, .5))
2)
Поставим кастомный размер.
Чтобы сделать это, сначала нам нужно поставить size_hint_x и size_hint_y на None, и задать атрибут size.
Код:
button = Button(text='The first app', size_hint=(None, None), size=(200, 200))

Ссылки

  • - документация по компонентам
  • - официальный сайт kivy
  • kivy/kivy - github kivy
  • kivymd/KivyMD - github KivyMD
KivyMD пока не трогайте.
 
Последнее редактирование:

IAJAC

One Level
23.11.2020
5
8
BIT
0
Это моя первая статья, если есть какие-то предложения по улучшению оформления, пишите.
 

Сергей Попов

Кодебай
30.12.2015
4 727
6 723
BIT
444
Это моя первая статья, если есть какие-то предложения по улучшению оформления, пишите.
Зачем столько редакций? Вы соберите ВСЮ необходимую информацию и внесите правки. Есть еще 1 замечание. Не надо писать каждое предложение с новой строки. Переносом и пробелом разделяйте лишь абзацы.
 

IAJAC

One Level
23.11.2020
5
8
BIT
0
Зачем столько редакций? Вы соберите ВСЮ необходимую информацию и внесите правки.
Извините, исправлюсь)Просто думал что мои постоянные редакции вам не видны, что они никого не беспокоят и не на кого не влияют.
 

Сергей Попов

Кодебай
30.12.2015
4 727
6 723
BIT
444
Просто думал что мои постоянные редакции вам не видны, что они никого не беспокоят
А Вы видите свою статью после редактирования? Пока я не одобрю редактирование - она Вам не видна по идее ))
 

ooolledj

One Level
26.03.2021
6
1
BIT
0
Интересно, немного пробовал писать под этот фреймворк и компилировать apk через buildozer. Жду статьи о том, что могут гугловские виджеты.
 

leningrad0511

New member
08.12.2021
1
0
BIT
0
По комментарию от разработчика kivy на reddit датированному осенью 2021 года (сейчас уже не найду) - приложения не умеют работать в свернутом режиме. Прилип с ним когда разрабатывал gps трекер на модуле mapview. Имейте ввиду, либо ищите конкретную актуальную информацию по функционалу самого apk.
P.S. кстати по модулю mapview вообще много вопросов в связке с buildozer. В spec файле он теперь должен идти отдельной строкой, но в общем и целом никак не помогло запустить карту без функционала ни на эмуляторах, ни на мобилках. В IDE все нормально, а вот после деплоя приложение крашится - mapview всему виной. Тестовые примеры от kivy работают без проблем.
Если кто-то научит как писать лог во время запуска apk для отладки желательно без рута - буду содействовать в фиксе багов) Тема интересная, чтобы писать простые приложения, не вникая в Java
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!