Kivy python android уроки

Создайте мобильное приложение с Kivy Python Framework

Вы узнаете как работать с Kivy и создавать свои собственные приложения

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

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

В этом уроке вы узнаете, как:

  • Работа с виджетами Kivy
  • Выложи пользовательский интерфейс
  • Добавить события
  • Используйте язык KV
  • Создать приложение калькулятора
  • Упакуйте свое приложение для iOS, Android, Windows и macOS

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

Понимание Kivy Framework

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

Когда вы создаете приложение с Kivy, вы создаете Natural User Interface или NUI . Идея Natural User Interface заключается в том, что пользователь может легко научиться использовать ваше программное обеспечение практически без инструкций.

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

Установка Кивы

Kivy имеет много зависимостей, поэтому рекомендуется установить его в виртуальную среду Python. Вы можете использовать либо встроенную venv библиотеку Python, либо virtualenv пакет. Если вы никогда ранее не использовали виртуальную среду Python, ознакомьтесь с разделом Виртуальные среды Python: Учебник для начинающих .

Вот как вы можете создать виртуальную среду Python:

Это скопирует ваш исполняемый файл Python 3 в папку с именем my_kivy_project и добавит несколько других подпапок в этот каталог.

Чтобы использовать вашу виртуальную среду, вам необходимо активировать ее. В Mac и Linux вы можете сделать это, выполнив следующее в my_kivy_project папке:

Команда для Windows похожа, но Scripts вместо нее находится сценарий активации внутри папки bin .

Теперь, когда у вас есть активированная виртуальная среда Python, вы можете запустить pip установку Kivy. В Linux и Mac вы выполните следующую команду:

В Windows установка немного сложнее. Ознакомьтесь с официальной документацией о том, как установить Kivy на Windows . (Пользователи Mac также могут скачать dmg файл и установить Kivy таким образом.)

Если у вас возникнут проблемы с установкой Kivy на вашей платформе, обратитесь к странице загрузки Kivy за дополнительными инструкциями .

Работа с Kivy Widgets

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

Запуск «Привет, Киви!» программа

Чтобы увидеть, как работает Kivy, взгляните на следующее «Hello, World!» применение:

Каждое приложение Kivy должно иметь подкласс App и переопределение build() . Здесь вы можете поместить свой код пользовательского интерфейса или вызвать другие функции, которые определяют ваш код пользовательского интерфейса. В этом случае необходимо создать Label виджет и передать в ее text , size_hint и pos_hint . Эти последние два аргумента не обязательны.

size_hint сообщает Kivy пропорции, которые следует использовать при создании виджета. Требуется два числа:

  1. Первое число является x подсказкой размера и относится к ширине элемента управления.
  2. Второе число является y подсказкой размера и относится к высоте элемента управления.

Оба эти числа могут быть где угодно между 0 и 1. Значением по умолчанию для обоих подсказок является 1. Вы также можете использовать pos_hint для позиционирования виджета. В приведенном выше блоке кода вы указываете Kivy центрировать виджет по осям x и y.

Читайте также:  Наруто тема для андроида

Чтобы заставить приложение работать, вы создаете экземпляр своего MainApp класса и затем вызываете run() . Когда вы сделаете это, вы должны увидеть на экране следующее:

Киви также выводит много текста stdout :

Это полезно для отладки вашего приложения.

Далее вы попробуете добавить Image виджет и посмотрите, чем он отличается от Label .

Отображение изображения

В Kivy есть несколько различных виджетов, связанных с изображениями. Вы можете использовать Image для загрузки локальных изображений с жесткого диска или AsyncImage для загрузки изображения с URL-адреса. В этом примере вы будете придерживаться стандартного Image класса:

В этом коде вы импортируете Image из kivy.uix.image подпакета. Image Класс занимает много различных параметров, но тот , который вы хотите использовать source . Это говорит Kivy, какое изображение загрузить. Здесь вы передаете полный путь к изображению. Остальная часть кода такая же, как вы видели в предыдущем примере.

Когда вы запустите этот код, вы увидите что-то вроде следующего:

Текст из предыдущего примера был заменен изображением.

Теперь вы узнаете, как добавить и упорядочить несколько виджетов в вашем приложении.

Выкладываем пользовательский интерфейс

Каждая используемая вами структура графического интерфейса имеет собственный метод размещения виджетов. Например, в wxPython вы будете использовать размеры, а в Tkinter вы используете менеджер макетов или геометрии. С Kivy вы будете использовать макеты . Есть несколько различных типов макетов, которые вы можете использовать. Вот некоторые из наиболее распространенных:

Вы можете найти в документации Kivy полный список доступных макетов. Вы также можете посмотреть kivy.uix фактический исходный код.

Попробуйте BoxLayout с этим кодом:

Здесь вы импортировать BoxLayout из kivy.uix.boxlayout и создать его экземпляр. Затем вы создаете список цветов, которые сами являются списками красно-сине-зеленых (RGB) цветов. Наконец, вы перебираете range 5, создавая кнопку btn для каждой итерации. Чтобы сделать вещи немного веселее, вы устанавливаете background_color кнопку в случайный цвет. Затем вы добавляете кнопку в свой макет с помощью layout.add_widget(btn) .

Когда вы запустите этот код, вы увидите что-то вроде этого:

Есть 5 кнопок разного цвета, по одной на каждую итерацию for цикла.

Когда вы создаете макет, есть несколько аргументов, которые вы должны знать:

  • padding : Вы можете указать padding в пикселях между макетом и его дочерними элементами одним из трех способов:
    1. Список четыре-аргумента: [ padding_left , padding_top , padding_right , padding_bottom ]
    2. Список с двумя аргументами: [ padding_horizontal , padding_vertical ]
    3. Единственный аргумент: padding=10
  • spacing : Вы можете добавить пробел между дочерними виджетами с этим аргументом.
  • orientation : Вы можете изменить значение orientation по умолчанию BoxLayout с горизонтального на вертикальное.

Добавление событий

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

Киви также имеет концепцию Properties , которая работает с EventDispatcher . Свойства помогут вам сделать проверку проверки. Они также позволяют запускать события всякий раз, когда виджет меняет свой размер или положение.

Давайте добавим событие кнопки к вашему коду кнопки ранее:

В этом коде вы вызываете button.bind() и связываете on_press событие с MainApp.on_press_button() . Этот метод неявно принимает виджет instance , который является button самим объектом. Наконец, сообщение будет напечатано stdout всякий раз, когда пользователь нажимает вашу кнопку.

Использование языка KV

Kivy также предоставляет язык разработки под названием KV, который вы можете использовать со своими приложениями Kivy. Язык KV позволяет отделить дизайн интерфейса от логики приложения. Это следует принципу разделения интересов и является частью архитектурного шаблона Model-View-Controller . Вы можете обновить предыдущий пример, чтобы использовать язык KV:

Этот код может показаться немного странным на первый взгляд, так как он создает Button без установки каких-либо своих атрибутов или привязки к каким-либо событиям. Здесь происходит то, что Kivy автоматически ищет файл, имя которого совпадает с именем класса в нижнем регистре, без App части имени класса.

В этом случае имя класса будет ButtonApp таким, поэтому Kivy будет искать файл с именем button.kv . Если этот файл существует и правильно отформатирован, то Kivy будет использовать его для загрузки пользовательского интерфейса. Создайте этот файл и добавьте следующий код:

Вот что делает каждая строка:

  • Строка 1 соответствует Button вызову в вашем коде Python. Он говорит Kivy, чтобы посмотреть на экземпляр объекта для определения кнопки.
  • Строка 2 устанавливает кнопки text .
  • Строка 3 устанавливает ширину и высоту с помощью size_hint .
  • Строка 4 устанавливает позицию кнопки с помощью pos_hint .
  • Строка 5 устанавливает on_press обработчик события. Чтобы сообщить Kivy, где находится обработчик событий, вы используете app.on_press_button() . Здесь Киви знает, что будет искать в Application классе метод с именем .on_press_button() .

Вы можете настроить все свои виджеты и макеты внутри одного или нескольких языковых файлов KV. Язык KV также поддерживает импорт модулей Python в KV, создание динамических классов и многое другое. Для получения полной информации, ознакомьтесь с руководством Kivy по языку KV .

Читайте также:  Виджет включения wi fi для android

Теперь вы готовы создать настоящее приложение!

Создание приложения Kivy

Один из лучших способов выучить новый навык – создать что-то полезное. Имея это в виду, вы будете использовать Kivy для создания калькулятора, который поддерживает следующие операции:

Для этого приложения вам понадобится ряд кнопок в какой-то раскладке. Вам также понадобится поле в верхней части вашего приложения для отображения уравнений и их результатов. Вот эскиз вашего калькулятора:

Теперь, когда у вас есть цель для пользовательского интерфейса, вы можете написать код:

Вот как работает код вашего калькулятора:

  • В строках 8 до 10 , необходимо создать список operators и пару удобных значений, last_was_operator и last_button , что вы будете использовать в дальнейшем.
  • В строках с 11 по 15 вы создаете макет верхнего уровня main_layout и добавляете в него TextInput виджет только для чтения .
  • В строках с 16 по 21 вы создаете вложенный список списков, содержащий большую часть ваших данных buttons для калькулятора.
  • В строке 22 вы начинаете for цикл над ними buttons . Для каждого вложенного списка вы будете делать следующее:
    • В строке 23 вы создаете BoxLayout горизонтальную ориентацию.
    • В строке 24 вы запускаете еще один for цикл над элементами во вложенном списке.
    • В строках с 25 по 39 вы создаете кнопки для строки, привязываете их к обработчику событий и добавляете кнопки в горизонталь BoxLayout от строки 23.
    • В строке 31 вы добавляете этот макет в main_layout .
  • В строках с 33 по 37 вы создаете кнопку равенства ( = ), привязываете ее к обработчику событий и добавляете к нему main_layout .

Следующим шагом является создание .on_button_press() обработчика событий. Вот как выглядит этот код:

Большинство виджетов в вашем приложении будут вызывать .on_button_press() . Вот как это работает:

  • Строка 41 принимает instance аргумент, чтобы вы могли получить доступ к тому, какой виджет вызвал функцию.
  • Строки 42 и 43 извлекают и сохраняют значение solution кнопки и text .
  • Строки 45–47 проверяют, какая кнопка была нажата. Если пользователь нажал C , то вы очистите solution . В противном случае перейдите к else утверждению.
  • Строка 49 проверяет, имеет ли решение какое-либо ранее существующее значение.
  • Строки 50–52 проверяют, была ли последняя нажатая кнопка кнопкой оператора. Если это было, то solution не будет обновляться. Это сделано для того, чтобы у пользователя не было двух операторов подряд. Например, 1 */ недопустимое утверждение.
  • Строки с 53 по 55 проверяют, является ли первый символ оператором. Если это так, то solution обновляться не будет, поскольку первое значение не может быть значением оператора.
  • Строки с 56 по 58 опускаются до else пункта. Если ни одно из предыдущих условий не выполнено, обновите solution .
  • Строка 59 устанавливает last_button метку последней нажатой кнопки.
  • Линия 60 комплектов last_was_operator в True или в False зависимости от того, был ли он или нет оператор символов.

Последний бит кода для записи .on_solution() :

Еще раз, вы берете текущий текст solution и используете встроенный в Python eval() для его выполнения. Если пользователь создал формулу наподобие 1+2 , то eval() запустит ваш код и вернет результат. Наконец, вы устанавливаете результат как новое значение для solution виджета.

Примечание: eval() несколько опасно, потому что может запускать произвольный код. Большинство разработчиков избегают использовать его из-за этого факта. Однако, поскольку вы разрешаете вводить только целые числа, операторы и точку eval() , использование в этом контексте безопасно.

Когда вы запустите этот код, ваше приложение будет выглядеть на настольном компьютере следующим образом:

Чтобы увидеть полный код для этого примера, разверните блок кода ниже.

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

Вот полный код калькулятора:

Пришло время развернуть ваше приложение!

Упаковка вашего приложения для Android

Теперь, когда вы закончили код для своего приложения, вы можете поделиться им с другими. Отличный способ сделать это – превратить ваш код в приложение, которое может работать на вашем телефоне Android. Для этого сначала вам нужно установить пакет buildozer с именем pip :

Затем создайте новую папку и перейдите к ней в своем терминале. Когда вы окажетесь там, вам нужно будет выполнить следующую команду:

Это создаст buildozer.spec файл, который вы будете использовать для настройки вашей сборки. В этом примере вы можете отредактировать первые несколько строк файла спецификации следующим образом:

Не стесняйтесь просматривать остальную часть файла, чтобы увидеть, что еще вы можете изменить.

На этом этапе вы почти готовы к созданию приложения, но сначала вам нужно установить зависимости для buildozer . После того, как они установлены, скопируйте приложение калькулятора в новую папку и переименуйте его в main.py . Это требуется buildozer . Если у вас нет правильного имени файла, сборка завершится неудачно.

Читайте также:  Save photos from android

Теперь вы можете запустить следующую команду:

Шаг сборки занимает много времени! На моей машине это заняло от 15 до 20 минут. В зависимости от вашего оборудования, это может занять больше времени, поэтому не стесняйтесь взять чашку кофе или пробежаться, пока вы ждете. Buildozer загрузит все компоненты Android SDK, необходимые для процесса сборки. Если все идет по плану, kvcalc-0.1-debug.apk в вашей bin папке будет файл с именем, похожим на что-то похожее .

Следующим шагом является подключение телефона Android к компьютеру и копирование apk файла на него. Затем вы можете открыть браузер файлов на вашем телефоне и нажать на apk файл. Android должен спросить вас, хотите ли вы установить приложение. Может появиться предупреждение, поскольку приложение было загружено из-за пределов Google Play, но вы все равно сможете его установить.

Вот калькулятор, работающий на моем Samsung S9:

У buildozer инструмента есть несколько других команд, которые вы можете использовать. Проверьте документацию, чтобы увидеть, что еще вы можете сделать.

Вы также можете упаковать приложение, используя, python-for-android если вам нужно более детальный контроль. Вы не будете освещать это здесь, но если вам интересно, посмотрите краткий старт проекта .

Упаковка вашего приложения для iOS

Инструкции по созданию приложения для iOS немного сложнее, чем для Android. Для получения самой последней информации вы всегда должны использовать официальную упаковочную документацию Kivy . Вам нужно будет выполнить следующие команды, прежде чем вы сможете упаковать свое приложение для iOS на вашем Mac:

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

Если вы получили сообщение об ошибке « iphonesimulator Не удается найти», обратитесь к ответу StackOverflow, чтобы узнать, как решить эту проблему. Затем попробуйте снова выполнить вышеуказанные команды.

Если вы столкнетесь с ошибками SSL, то у вас, вероятно, нет установки OpenSSL в Python. Эта команда должна исправить это:

Теперь вернитесь и попробуйте toolchain снова выполнить команду.

После того, как вы успешно выполнили все предыдущие команды, вы можете создать свой проект XCode, используя toolchain скрипт. Точка входа вашего основного приложения должна быть названа main.py перед созданием проекта XCode. Вот команда, которую вы запустите:

Там должен быть каталог с именем title вашего проекта Xcode в нем. Теперь вы можете открыть этот проект в Xcode и работать над ним оттуда. Обратите внимание: если вы хотите подать заявку в App Store, вам нужно будет создать учетную запись разработчика на developer.apple.com и оплатить ее ежегодную плату.

Упаковка вашего приложения для Windows

Вы можете упаковать свое приложение Kivy для Windows, используя PyInstaller. Если вы никогда не использовали его раньше, ознакомьтесь с разделом Использование PyInstaller для простого распространения приложений Python .

Вы можете установить PyInstaller, используя pip :

Следующая команда упакует ваше приложение:

Эта команда создаст исполняемый файл Windows и несколько других файлов. -w Аргумент говорит PyInstaller , что это оконное приложение, а не приложение командной строки. Если вы хотите, чтобы PyInstaller создавал один исполняемый файл, вы можете передать —onefile аргумент в дополнение к -w .

Упаковка вашего приложения для macOS

Вы можете использовать PyInstaller для создания исполняемого файла Mac, как вы это делали для Windows. Единственное требование – вы должны запустить эту команду на Mac:

Это создаст один исполняемый файл в dist папке. Исполняемый файл будет иметь то же имя, что и файл Python, который вы передали PyInstaller. Если вы хотите уменьшить размер файла исполняемого файла или используете GStreamer в своем приложении, то посетите страницу упаковки Kivy для macOS для получения дополнительной информации.

Вывод

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

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

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

Дальнейшее чтение

Чтобы узнать больше о Kivy, ознакомьтесь с этими ресурсами:

Чтобы увидеть, как вы можете создать настольное приложение с другой структурой Python GUI, ознакомьтесь с разделом Как создать приложение Python GUI с помощью wxPython .

Источник

Оцените статью