ОБСУЖДЕНИЕ Статья 

Kivy — Введение

7 ответов 11,2 тыс.
Автор темы
Прежде чем переходить к коду, пару слов о том, чем Kivy отличается от других GUI-инструментов для Python. Главные его особенности — это ориентация на мультисенсорные (touch) интерфейсы и единая кодовая база сразу для нескольких платформ: Windows, Linux, macOS, а главное — Android и iOS. То есть приложение, которое вы напишете на десктопе, без переписывания логики можно собрать под мобильные ОС. Именно поэтому Kivy часто сравнивают с Flutter и PyQt, только в отличие от PyQt, он изначально спроектирован под кастомный интерфейс и сенсорный ввод, а не под классические оконные приложения. Это стоит держать в голове на протяжении всей серии.

Всем привет, решил сделать серию статей про 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))

Ссылки​

KivyMD пока не трогайте.
 
AI-выжимка (тезисы)
Коротко о каждом :: Kivy — кроссплатформенный python-фреймворк, KivyMD добавляет к нему виджеты в стиле Google Material Design.
Установка kivy :: На Windows kivy ставится через pip с зависимостями kivy_deps.sdl2, glew и gstreamer версии 0.1.*, на Linux достаточно apt install python3-kivy.
Первое приложение :: Kivy-приложение — это класс, наследующий App, где метод build возвращает root-виджет, который приложение отображает.
Последнее редактирование модератором:
  • Нравится
Реакции: _Eliot_, ooolledj, Дядюшка Рик и ещё 1 человек
4
Это моя первая статья, если есть какие-то предложения по улучшению оформления, пишите.
 
Это моя первая статья, если есть какие-то предложения по улучшению оформления, пишите.
Зачем столько редакций? Вы соберите ВСЮ необходимую информацию и внесите правки. Есть еще 1 замечание. Не надо писать каждое предложение с новой строки. Переносом и пробелом разделяйте лишь абзацы.
 
Зачем столько редакций? Вы соберите ВСЮ необходимую информацию и внесите правки.
Извините, исправлюсь)Просто думал что мои постоянные редакции вам не видны, что они никого не беспокоят и не на кого не влияют.
 
Извините, исправлюсь)Просто думал что мои постоянные редакции вам не видны, что они никого не беспокоят и не на кого не влияют.
В челом - отлично, что решились на написание.
 
Просто думал что мои постоянные редакции вам не видны, что они никого не беспокоят
А Вы видите свою статью после редактирования? Пока я не одобрю редактирование - она Вам не видна по идее ))
 
Интересно, немного пробовал писать под этот фреймворк и компилировать apk через buildozer. Жду статьи о том, что могут гугловские виджеты.
 
По комментарию от разработчика kivy на reddit датированному осенью 2021 года (сейчас уже не найду) - приложения не умеют работать в свернутом режиме. Прилип с ним когда разрабатывал gps трекер на модуле mapview. Имейте ввиду, либо ищите конкретную актуальную информацию по функционалу самого apk.
P.S. кстати по модулю mapview вообще много вопросов в связке с buildozer. В spec файле он теперь должен идти отдельной строкой, но в общем и целом никак не помогло запустить карту без функционала ни на эмуляторах, ни на мобилках. В IDE все нормально, а вот после деплоя приложение крашится - mapview всему виной. Тестовые примеры от kivy работают без проблем.
Если кто-то научит как писать лог во время запуска apk для отладки желательно без рута - буду содействовать в фиксе багов) Тема интересная, чтобы писать простые приложения, не вникая в Java