популярные python kivy приложения

Простые сладкие приложения с Kivy

популярные python kivy приложения. b79a3cc297aa48dab11048324eacd374. популярные python kivy приложения фото. популярные python kivy приложения-b79a3cc297aa48dab11048324eacd374. картинка популярные python kivy приложения. картинка b79a3cc297aa48dab11048324eacd374.

После неудачной попытки первой версии статьи, когда материал заминусовали из-за чудовищного дизайна приведенного в статье примера программы (статью пришлось удалить), я учел все минусы и привожу более поздний вариант тестового приложения.

Возможно, для вас будет новостью, но разрабатывать мобильные приложения с функционалом, который доступен Java разработчикам, под Android с помощью фреймворка Kivy не просто просто, а очень просто! Именно этого правила я придерживаюсь, создавая свои проекты с Python + Kivy — разработка должна быть максимально простой и быстрой. Как щелчок пальцами.

На новичков подаваемая информация не расчитана, я не буду на пальцах объяснять, что, откуда и куда. Думаю, те, кто читает данную статью, обладают достаточными для понимания материала, знаниями. К тому же, Kivy, как я уже только что написал, очень простой фреймворк и вся документация с примерами использования находится в исходниках!

В прошлой статье были рассмотрены несколько экранов приложения Clean Master в реализации на Kivy. Сегодня я покажу вам один из черновиков приложения, над которым работаю в свободное время.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Говорят, что Kivy годится только лишь для наколенных поделок и серьезное приложение сделать с его помощью не получится. Спешу вас обрадовать (или огорчить) — так говорят те, кто не умеет данный фрукт (Kivy) готовить.

А мы умеем и нам понадобятся: кофе-сигареты, террариум с третьим Python-ом, то ли птица, то ли фрукт — Kivy и немного мозгов. Наличие последних приветствуется! Заходим на github и качаем Мастер создания нового проекта для фреймворка Kivy + Python3 (да, я полностью отказался от использования Python2, что и вам советую). Распаковываем, переходим в папку с мастером и запускаем:

если у проекта имеется репозиторий на github.

если репозитория не github не имеется.

В этом случае после создания откройте файл проекта main.py и отредактируйте, функцию отправки баг репорта вручную.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Итак, в результате мы получаем дефолтный Kivy проект со следующей структурой каталогов:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Отдельно следует рассмотреть каталог Libs:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Остальные каталоги проекта в комментариях не нуждаются. Созданный проект будет иметь два экрана — главный и экран настроек:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Все что нам нужно, это использовать свой главный экран, то есть заменить файл startscreen.py в директории Libs/uix, создать новый файл разметки экрана startscreen.kv в папке Libs/uix/kv, отредактировать базовый класс program.py, ну, и добавить новые импорты и сопутствующие классы, если таковые имеются.

Давайте начнем с кастомных кнопкок, которые используются в нашем главном экране:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Да, в самом Kivy нет многих стандартных элементов для построения дизайна интерфейса, которые есть в Java, но зато Kivy позволяет сконструировать и анимировать абсолютно любой виджет, который вам понадобиться самостоятельно. Все зависит от границ вашей фантазии.

Источник

Kivy — Создание мобильных приложений на Python

популярные python kivy приложения. DevOps Worm 2021. популярные python kivy приложения фото. популярные python kivy приложения-DevOps Worm 2021. картинка популярные python kivy приложения. картинка DevOps Worm 2021.

популярные python kivy приложения. kivy python android ios. популярные python kivy приложения фото. популярные python kivy приложения-kivy python android ios. картинка популярные python kivy приложения. картинка kivy python android ios.

В наши дни каждый разработчик может столкнуться с необходимостью работы над мобильным или веб-приложением на Python. В Python нет встроенных инструментов для мобильных устройств, тем не менее существуют пакеты, которые можно использовать для создания мобильных приложений. Это Kivy, PyQt и даже библиотека Toga от Beeware.

Содержание

Библиотеки являются основными элементами мобильного мира Python. Однако, говоря о Kivy, нельзя игнорировать преимущества данного фреймворка при работе с мобильными приложениями. Внешний вид приложения автоматически подстраивается под все платформы, разработчику при этом не нужно компилировать код после каждой поправки. Кроме того, здесь для создания приложений можно использовать чистый синтаксис Python.

В руководстве будут разобраны следующие темы:

Разбор данного руководства предполагает, что читатель знаком с объектно-ориентированным программированием. Для введения в курс дела можете просмотреть статью об Объектно-ориентированном программировании (ООП) в Python 3.

Принципы работы фреймворка Kivy Python

Kivy был создан в 2011 году. Данный кросс-платформенный фреймворк Python работает на Windows, Mac, Linux и Raspberry Pi. В дополнение к стандартному вводу через клавиатуру и мышь он поддерживает мультитач. Kivy даже поддерживает ускорение GPU своей графики, что во многом является следствием использования OpenGL ES2. У проекта есть лицензия MIT, поэтому библиотеку можно использовать бесплатно и вкупе с коммерческим программным обеспечением.

Во время разработки приложения через Kivy создается интуитивно понятный интерфейс (Natural user Interface), или NUI. Его главная идея в том, чтобы пользователь мог легко и быстро приспособиться к программному обеспечению без чтения инструкций.

Kivy не задействует нативные элементы управления, или виджеты. Все его виджеты настраиваются. Это значит, что приложения Kivy будут выглядеть одинаково на всех платформах. Тем не менее, это также предполагает, что внешний вид вашего приложения будет отличаться от нативных приложений пользователя. Это может стать как преимуществом, так и недостатком, все зависит от аудитории.

Установка Kivy

У Kivy есть множество зависимостей, поэтому лучше устанавливать его в виртуальную среду Python. Можно использовать встроенную библиотеку Python venv или же пакет virtualenv.

Виртуальная среда Python создается следующим образом:

Источник

Трепещущий Kivy. Обзор возможностей фреймворка Kivy и библиотеки KivyMD

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Kivy и Flutter — два фреймворка с открытым исходным кодом для кроссплатформенной разработки.

Flutter:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Как вы думаете, какое приложение на вышеприведенных скриншотах написано с использованием Flutter и какое с помощью Kivy? Ответить сходу трудно, поскольку ярко выраженных отличий нет. Единственное, что сразу бросается в глаза (нижний скриншот) — в Kivy все еще нет нормального сглаживания. И это грустно, но не критично. Сравнивать мы будем отдельные элементы приложения и их исходный код на Dart (Flutter) и Python/KV language (Kivy).

Посмотрим теперь как выглядят компоненты изнутри…

StoryCard

Разметка карточки на языке KV-Language:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Базовый Python класс:

Flutter:

Как видим, код на Python и KV-Language получается вдвое короче. Исходный код проекта на Python/Kivy, который рассматривается в этой статье, имеет общий размер 31 килобайт. 3 килобайта из этого объема приходится на Python код, остальное — KV-Language. Исходный код на Flutter — 54 килобайт. Впрочем, здесь удивляться, кажется, нечему — Python один их самый лаконичных языков программирования в мире.

Мы не будем спорить о том, что лучше: описывать UI при помощи DSL языков или прямо в коде. В Kivy, кстати, также можно строить виджеты Python кодом, но это не очень хорошее решение.

TopBar

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Реализация этого бара, включая анимацию, на Python/Kivy заняла всего 88 строчек кода. На Dart/Flutter — 325 строк и 9 килобайт на диске. Посмотрим, что представляет из себя этот виджет:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Лого, три таба, аватар, три таба и один таб — кнопка настроек. Реализация таба с анимированным индикатором:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Анимация индикатора и смена типа курсора мыши реализована в Python файле в одноименном с правилом разметки классе:

Мы просто анимируем ширину и opacity индикатора в зависимости от состояния кнопки (active). Состояние кнопки устанавливается в главном классе экрана приложения:

Подробнее об анимации а Kivy:

Реализация на Dart/Flutter.

Поскольку кода очень много, я спрятал все под спойлеры:

Источник

популярные python kivy приложения. . популярные python kivy приложения фото. популярные python kivy приложения-. картинка популярные python kivy приложения. картинка .
Изучаю python kivy и для себя решил написал маленькое приложение, чтобы разнообразить свое питание. Решил поделиться. Статья рассчитана на новичков в kivy. Приложение занимает около 100 строк кода.

Цель создания велосипеда приложения:

Интро

Можно не читать, в интро всякая лирика.

Пришлось пожить в одной стране, в одной гостинице, где кормили ежедневно яйцами на завтрак и больше ничем, так через месяц начал чесаться. Обращался за медицинской помощью, хотя раньше никогда ничем подобным не страдал. Наученный горьким опытом после этого для себя решил допускать как можно меньше повторений в еде, чтобы ничего не успевало в организме накопиться. Это мой личный опыт, я просто рассказываю, без навязывания. Возможно, нет правил без исключения, наверное, овсянку можно есть и каждый день на протяжении десятков лет.

Скриншоты

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Предположим мой рацион состоит из 50 блюд. Например, сегодня ел омлет. Нажимаю на кнопку, и омлет стал на 50 строку в очереди, а перед ним стоят 49 блюд, которые съем, чтобы опять добраться до омлета. Вот и вся логика приложения. (На скриншотах блюда нагенеренные, все совпадения случайны, к моему реальному рациону отношения не имеющие).

Исходный код и пояснения

Я сознательно не использовал kv файлы, так как код дан в учебных целях, для людей, которые знакомы с python. Все написано на голом python. В пояснениях я не буду останавливаться на объяснении python кода, а сразу перейду к специфическим фишкам Kivy.

Запуск на windows & linux & macos

Принцип для всех операционок одинаковый:

Программа должна заработать.

Сборка apk файла и запуск на телефоне с андроид

Итак, у нас есть файл с кодом программы, написанный на python. Как теперь создать приложение, чтобы его можно было запустить на телефоне с андроидом? Раньше это был достаточно мудреный процесс, требующий навыков и танцев с бубном. Теперь это не проблема.
Вот пошаговая инструкция:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Как закинуть apk файл на телефон?

Можно, конечно, сделать это как угодно, отправить себе по почте, куда-нибудь выложить, закинуть в телеграмм и т.д., а потом скачать приложение на телефон.

Но существует специализированный инструмент для этого. Включаем на телефоне режим разработчика, подключаем USB-кабелем. Виртуалка должна увидеть, что вы подключили телефон. Дальше устанавливаем adb:

После установки заходим в папку bin и вводим команду

И можно примерно через минутку увидеть на телефоне приложение после того, как увидим
Success в консоли.

Если вдруг приложение падает или ведет себя не так, как ожидалось, то есть вот такая команда для просмотра ошибок

Русское имя приложения

Если вы захотите, чтобы ваше приложение называлось по-русски, например, «Дневник питания», то надо внести изменения в файл:

В тег appName прописывается русское название приложения, эта папка создается после первого запуска buildozer android debug. После того как файл отредактируете, вернитесь назад в папку FoodOptions и запустите buildozer android debug повторно. Файл соберется по-новой. После установки на телефон имя программы будет написано на русском.

О файле buildozer.spec

Вот мой файл с гитхаба: buildozer.spec
Именно этот файл указывает buildozer-у, как именно собрать пакет.

Там множество разных вариаций. Кому интересно, то введите внутри виртуалки команду:

Будет создан дефолтный файл buildozer.spec с кучей комментариев и пояснений. Например, если вы хотите какую-нибудь свою иконку для приложения, то указываете в строке:

свой файл с иконкой. И приложение соберется уже с вашей иконкой.

Если вам надо подгрузить какой-нибудь специфический модуль, который не входит в официальную библиотеку python, то это делается в строке requirements =. В общем, рассказ о файле buildozer.spec может занять целую статью, а то и две.

Загрузка приложения в Google Play

Надо зарегаться, пройти все процедуры, получить ключи. И дальше запускать:

Полученный файл apk-apkname-release.apk заливать в Google Play.

Ссылки

Источник

Разработка мобильных приложений на Python. Библиотека KivyMD

популярные python kivy приложения. . популярные python kivy приложения фото. популярные python kivy приложения-. картинка популярные python kivy приложения. картинка .

Приветствую! Сегодня речь снова пойдет о библиотеке KivyMD — наборе виджетов для кроссплатформенной разработки на Python в стиле Material Design. В этой статье я сделаю не обзор виджетов KivyMD, как в недавней статье, а, скорее, это будет материал больше о позиционировании виджетов. Что-то похожего на туториал по разработке мобильных приложений на Python для новичков здесь не будет, так что если впервые слышите о фреймворке Kivy, вряд ли вам будет все это интересно. Ну, а мы погнали под кат!

На днях скачал из Google Play демонстрационное приложение Flutter UIKit:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Некоторые элементы UI отличаются, не в силу каких-то технических особенностей, из-за которых нельзя было получить идентичный результат, а просто я посчитал, что так будет более органичней (например, черный Toolbar, по моему мнению, совсем не смотрится).

Итак! Что бросается в глаза, глядя на экран, который мы будем воспроизводить? Прозрачный фон переднего layout. В Kivy такую возможность предоставляет FloatLayout, который позволяет размещать в себе виджеты и контроллы один над другим следующим образом:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Схематично наш экран будет выглядеть так:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Разметка этого экрана довольно простая:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Почему я говорю о FloatLayout, если наш экран унаследован от Screen?

Все виджеты во FloatLayout позиционируются от нижнего левого угла, то есть, на экране им автоматически присваивается позиция (0, 0). В разметке не сложно проследить порядок добавления элементов на экран сверху вниз:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Если кто-то обратил внимание, то позицию мы указали только одному виджету:

Каждому виджету в Kivy помимо конкретных координат (x, y) можно указать подсказку позиции:

Так вот, нижнее фоновое изображение…

… благодаря виджету FitImage (библиотека KivyMD), автоматически растягивается на все выделенное ему пространство с сохранением пропорций изображения:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

По умолчанию каждому виджету и лайоуту в Kivy предоставляется 100 % пространства, если не указанно иное. Например, если вы захотите добавить на экран одну кнопку, вы, очевидно сделаете следующее:

И получите результат:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Кнопка заняла 100 % пространства. Чтобы разместить кнопку по центру экрана, нужно, во-первых, задать ей необходимый размер и, во-вторых, указать, где она будет находится:

Теперь картина изменилась:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Также можно указать свойство size_hint, от 0 до 1, (эквивалент 0-100%), то есть, подсказка размера:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Или тоже самое, но подсказка ширины (size_hint_x):

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

MDToolbar имеет высоту в 56dp, не может занимать все пространство, и если ему не подсказать, что его место сверху, то он автоматически прилипнет к нижней части экрана:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Список карточек — OrderProductLayout (о нем мы поговорим ниже) — это ScrollView с элементами MDCard и он занимает всю высоту экрана, но благодаря padding (значения отступов в лайоутах) кажется, что он находится чуть выше центра экрана. Ну а MDBottomAppBar по умолчанию кидает якорь к нижней границе экрана. Поэтому только MDToolbar мы указали, где его место.

Теперь давайте посмотрим, что представляет из себя виджет OrderProductLayout:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Как видим, это четыре карточки, вложенные в ScrillView. В отличие от родительского экрана, который унаследован от FloatLayout, здесь все виджеты читаются сверху вниз.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Это очень удобно, поскольку прослеживается четкая иерархия виджетов, древовидная структура и с одного взгляда понятно, какой виджет/контролл какому лайоуту принадлежит. В Kivy наиболее частым используемым лайоутом является BoxLayout — коробка, которая позволяет размещать в себе виджеты по вертикали либо по горизонтали (по умолчанию — последнее):

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Более наглядно это видно из следующей схемы, где используется BoxLayout горизонтальной ориентации:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Мы запретили BoxLayout использовать 100% пространства — size_hint_y: None и сказали — твоя высота будет ровно такой, какой будет высота самого высокого элемента, вложенного в тебя — height: self.minimum_height.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Если бы мы захотели использовать вертикальную прокрутку списка, нам нужно было бы изменить GridLayout следующим образом:

Заменить строки (rows) на столбцы (cols) и указать в minimum не ширину, а высоту:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Следующие карты — выбор цвета и размера (они практически идентичны):

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Отличительной особенностью языка разметки Kv Language является не только четкая структура виджетов, но и то, что этот язык поддерживает некоторые возможности языка Python. А именно: вызов методов, создание/изменение переменных, логические, I/O и математические операции…

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Вычисление значения value, объявленного в Label

… происходит непосредственно в самой разметке:

И я никогда не поверю, что вот это (код Flutter)…

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

… логичнее и читабельнее кода Kv Language:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Вчера меня спрашивали, как у Kivy обстоят дела со средой разработки, есть ли автокомплиты, хотрелоад и прочие прелести? С автокомплитами все отлично, если пользоваться PyCharm:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Насчет хотрелоад… Python — интерпретируемый язык. Kivy использует Python. Соответственно, чтобы увидеть результат, не нужна компиляция кода, запустил — увидел/протестирвал. Как я уже говорил, Kivy не использует нативные API для рендера UI, поэтому позволяет эмулировать различные модели устройств и платформ с помощью модуля screen. Достаточно запустить ваш проект с нужными параметрами, чтобы на компьютере открылось окно тестируемого приложения так, как если бы оно было запущено на реальном устройстве. Звучит странно, но поскольку Kivy абстрагируется от платформы в отрисовке UI, это позволяет не использовать тяжелые и медленные эмуляторы для тестов. Это касается только UI. Например, тестовое приложение, описываемое в этой статье тестировалось с параметрами -m screen:droid2, portrait, scale=.75.

Слева — запущено на мобильном устройстве, справа — на компьютере:

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

популярные python kivy приложения. image loader. популярные python kivy приложения фото. популярные python kivy приложения-image loader. картинка популярные python kivy приложения. картинка image loader.

Ну, и, наконец, финальный результат — запуск на мобильном устройстве…

Единственное, что огорчает, это скорость запуска. У того же Flutter она просто феноменальная!

Надеюсь, был кому-то полезен, до новых встреч!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *