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

Разработкамобильныхприложенийнаpython

Добро пожаловать в раздел разработки приложений на Python для начинающих, где мы будем создавать кроссплатформенное мобильное приложение и настольное приложение с графическим интерфейсом пользователя с использованием инфраструктуры Python kivy. Для тех, кто не знает, что такое киви.

Kivy – это фреймворк на Python, который позволяет нам создать один набор кода на Python, а затем перенести этот код на несколько платформ. Такие как мобильные и android, и ios.

Мы можем портировать код на macos, linux и windows. Это делает его универсальным, помогая нам создавать кроссплатформенные приложения.

Кроме того, очень долгое время у сообщества Python не было большого количества вариантов разработки мобильных приложений на Python. С kivy это открыло множество дверей для сообщества Python. Начать выпуск мобильных приложений, мобильных игр, кроссплатформенных приложений с графическим интерфейсом пользователя с использованием python.

Давайте начнем с этого руководства по разработке приложений на Python. Мы не только рассмотрим обычные настольные приложения, но и рассмотрим разработку мобильных приложений на Python.

Итак, в этом руководстве для начинающих мы узнаем следующее о фреймворке kivy.

  • Настройка инфраструктуры kivy в среде Python.
  • Добавление элементов пользовательского интерфейса в наше приложение kivy.
  • Обработка событий.
  • Взаимодействие с базой данных.
  • Размещение элементов пользовательского интерфейса.
  • Компиляция для различных платформ, таких как android, ios, macos, linux и windows.

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

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

По этой причине kivy может быть не лучшим кандидатом для мобильных приложений, которые будут ориентированы на потребителя. Однако Kivy может быть очень полезен для технических реализаций.

Где вы хотите использовать свои существующие навыки работы с Python, чтобы пойти и создать приложение, которое может выглядеть одинаково на всех платформах, на которых вы его развертываете. Если вы хотите создать следующий Spotify с красивыми элементами дизайна.

Тогда kivy, вероятно, не будет лучшим кандидатом. Затем вы можете посмотреть на такие технологии, как react native, ionic, flutter или полностью native с kotlin / java или swift / objective-c.

Очевидно, вам необходимо в конце дня оценить все технологии, которые вы используете для конкретного варианта использования.

Некоторые предположения перед установкой kivy

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

Поскольку kivy построен на довольно многих других библиотеках python, нам нужно создать безопасный среда. Где мы можем установить различные библиотеки Python, от которых зависит kivy.

Итак, я начну обучение с предположения, что вы уже установили python в своей среде. Будь то windows, linux или macos.

Разработка приложений на Python – что мы создаем

Итак, давайте поговорим о том, кем мы будем строительство. Мы собираемся создать базовое управление задачами с помощью kivy. Мы сможем добавлять задачи, удалять задачи, отмечать их как выполненные.

Затем мы собираемся собрать его для android, ios, windows, linux и macos. Если есть дополнительное время, мы можем даже построить это на Raspberry Pi. Вот небольшой набросок того, что мы будем строить для этого урока.

python app development for beginners using kivy - task manager
Учебное пособие по разработке приложений Python для начинающих – базовое приложение диспетчера задач

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

Итак, я буду создавать это приложение в ubuntu linux, но вы можете использовать любую удобную вам операционную систему. В некоторых операционных системах процедура установки может немного отличаться.

Так что не стесняйтесь просто читать о своей среде разработки. Ubuntu должен быть очень похож на процедуру на Mac, но для Windows вам может потребоваться немного другая процедура установки.

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

Разработка приложения на Python – Установка Kivy

Предпочитайте видео. Посмотрите это видео, в котором мы исправляем проблемы и устанавливаем по мере продвижения:

Давайте сначала начнем с настройки базовой виртуальной среды. Если вы не знаете, как работают виртуальные среды Python, вот краткое объяснение. Виртуальные среды Python позволяют устанавливать зависимости в папку.

Затем вы можете загрузить эту папку в качестве среды по умолчанию для запуска приложения Python. Это просто позволяет избежать конфликтов зависимостей в вашем проекте.

Что позволяет адаптировать ваш проект к этой конкретной среде. Итак, вот как вы можете создать виртуальную среду python.

Если вы используете Linux, как я, вам необходимо установить виртуальную среду python. Поэтому запустите это, чтобы установить его в окне терминала.

  sudo apt-get install python3-venv  

В окне терминала запустите эту команду.

  python3 -m venv kivyplayground   

Когда вы запустите этот питон, он создаст для вас новую виртуальную среду на вашем kivyplayground. папка. Теперь следующее, что вы увидите, если войдете в эту папку, это.

Руководство по разработке приложений Python для начинающих - создание venv

Как видите, эта команда создала полностью новая среда для нас с нашим собственным двоичным кодом pip3 и python3.

Довольно круто, эй? Итак, приступим к активации нашей среды и установке kivy. Чтобы активировать эту среду, вы запускаете эту команду на терминале.

  исходный бункер / активировать  

После того, как вы запустите это, вы увидите, как терминал переходит в вашу виртуальную среду, как это.

Руководство по разработке приложений Python для начинающих - python активирует виртуальную среду

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

  python -m pip install kivy  

Так что в linux вы можете получить несколько подобных ошибок.

Руководство по разработке приложений Python для начинающих - ошибки при установке kivy

На самом деле это проблема в ubuntu. Если вы также используете ubuntu, вместо этого вы можете установить его с помощью этой команды. Если вы используете macos, вышеуказанная команда должна работать нормально.

  sudo apt-get install python3-kivy  

Таким образом, приведенное выше исправит это для вашей основной среды Python, но не для вашей виртуальной. Вы, вероятно, все еще не сможете запустить kivy пока что на linux. Поэтому вам нужно будет установить еще несколько зависимостей.

  sudo apt install libsdl2-image-dev libsdl2-ttf-dev libsdl2-mixer-dev libpango1.0-dev   

Тогда вам также понадобится gstreamer, поэтому для установки вы запускаете команду .

  sudo apt-get install -y  python-pip  build-essential  git  python  python-dev  ffmpeg  libsdl2-dev  libsdl2-image-dev  libsdl2-mixer-dev  libsdl2-ttf-dev  libportmidi- dev  libswscale-dev  libavformat-dev  libavcodec-dev  zlib1g-dev sudo apt-get install -y  libgstreamer1.0  gstreamer1.0-plugins-base  gstreamer1.0-plugins-good pip3 install wheel cython tokenizer sudo apt-get install build-essential libev4 libev-dev cython3 python-setuptools  

Проблема, с которой мы сталкиваемся в Ubuntu, заключается в том, что зависимости не всегда совпадают. Итак, теперь мы скомпилируем kivy из исходного кода, выполнив следующую команду.

  pip install git + https: //github.com/kivy/kivy.git@master   

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

Руководство по разработке приложений Python для начинающих - компиляция kivy

Теперь мы можем наконец начать использовать kivy в ubuntu. Если вы используете macos и windows, этот процесс должен быть таким же простым, как просто запустить pip install kivy. Однако я подумал, что сделаю версию ubuntu, чтобы показать вам, как справиться с более сложной установкой.

Давайте теперь посмотрим на самый простой код, который мы можем написать, чтобы получить окно kivy, работающее с базовый виджет меток. Я буду использовать код Visual Studio для редактирования кода, но вы можете использовать любой редактор, который вам нравится.

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

Итак, мы сейчас создадим базовое приложение, которое просто говорит привет, мир и меняет заголовок окна. Вы можете скопировать этот код ниже и назвать его main.py.

  из kivy.app import App from kivy.uix.label import Label class KivyApp (App): def build (self): self.title = "Test app" label = Label (text = 'Hello world app', size_hint = (. 1, .1), pos_hint = {'center_x': .1, 'center_y': .1}) вернуть метку, если __name__ == '__main__': app = KivyApp () app.run ()  

Сохраните его и запустите, набрав:

  python main.py  

В командной строке нажмите Enter. У вас должно получиться что-то вроде этого.

Руководство по разработке приложений на Python для начинающих - basic kivy пример

Итак, очень быстрый обзор того, как код работает. Итак, у Kivy есть основной класс приложения, который реализует метод сборки. Метод сборки принимает виджеты в kivy и компилирует их вместе, а затем возвращает контекст.

В нашем первом базовом приложении мы просто возвращаем базовую метку. Мы также устанавливаем заголовок, вызывая self.title = «Test app». Так что самое замечательное в Kivy то, что он предназначен для разделения задач.

Это означает, что вы можете создавать клиентские виджеты с помощью библиотеки opengl или использовать существующие виджеты kivy для создания другого.

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

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

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

Итак, прежде чем мы начнем создавать наше приложение диспетчера задач, давайте узнаем о файлах KV. Таким образом, файлы KV - это отдельный язык, который очень похож на YAML, который представляет собой упрощенный способ создания шаблонов виджетов.

Вы также можете переопределить поведение текущих виджетов. Для этого все, что вам нужно сделать, это определить файл в нижнем регистре с именем класса виджета в качестве имени файла и расширением .kv в вашем проекте.

Это переопределит свойства этого виджета. Давайте создадим что-нибудь простое в обычном kivy, а затем сконвертируем th на языке kv.

Язык Kivy KV - разработка приложений на Python

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

  из kivy.app импортировать приложение из kivy.uix.label импортировать метку из kivy.uix.textinput импортировать TextInput из kivy.uix.gridlayout импортировать GridLayout из kivy.uix.boxlayout импортировать BoxLayout из kivy.uix .button import Кнопка из kivy.core.window import Window class KivyApp (App): def build (self): self.title = "Login Screen" Window.size = (409, 336) layout = GridLayout (cols = 2, rows = 2, padding = 23, интервал = 22, row_default_height = 35) usernameinput = TextInput () passwordinput = TextInput (password = True) usernamelbl = Label (text = "Имя пользователя", size_hint_x = None, width = 200) passwordlbl = Label (text = "Пароль", size_hint_x = None, width = 236) layout.add_widget (usernamelbl) layout.add_widget (usernameinput) layout.add_widget (passwordlbl) layout.add_widget (passwordinput) main_layout = BoxLayout (direction = 'vertical', заполнение = 23, интервал = 22) main_layout.add_widget (layout) loginbutton = Button (text = "Login") main_layout.add_widget (loginbutton) возвращает main_layout, если __name__ == '__main__': app = KivyApp () app.run ()  

Итак, если вы запустите этот код, вы получите красивое окно входа, подобное этому.

Руководство по разработке приложений Python для начинающих - пример экрана входа в систему

Итак, давайте теперь поговорим о коде, задействованном в создании этого окна. Сначала мы импортируем набор виджетов, TextInput, GridLayout, BoxLayout, Label, Window и Button.

TextInput - это, по сути, поле ввода текста, в которое пользователь может ввести текст. GridLayout позволяет нам определять макет с точки зрения строк и столбцов, как в таблице. BoxLayout имеет поля в горизонтальном или вертикальном направлении, размер которых изменяется до полного окна.

Ярлык для нашего имени пользователя и текста пароля рядом с нашим полем ввода текста. Окно, которое мы используем для изменения размера нашего окна, и, наконец, виджет кнопки предназначен для нашей кнопки входа в систему. Итак, давайте теперь рассмотрим код.

Мы устанавливаем заголовок нашего окна на экран входа в систему. Затем мы устанавливаем размер нашего окна на 409 пикселей в ширину и 312 пиксель в высоту. Это дает нам хороший размер для нашего окна входа в систему.

Затем мы определяем макет сетки с 2 строками и 2 столбцами. Итак, первые 2 столбца в нашей первой строке будут содержать нашу метку имени пользователя и поле ввода имени пользователя. Мы также определяем свойство padding и spacing и максимальную высоту строки для нашей сетки. Просто чтобы наши виджеты располагались красиво.

Затем мы определяем виджет для нашего имени пользователя и пароля с флагом password = True, чтобы ввод был замаскированным полем. Мы также определяем наши метки для наших полей ввода текста.

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

Затем мы добавляем нашу кнопку входа в наш макет окна, потому что мы хотим, чтобы она была составной кнопкой над двумя столбцами из нашей сетки. Затем мы просто возвращаем main_layout как контекст для рендеринга.

Со всем этим мы получаем красивый экран входа в систему.

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

  BoxLayout: ориентация: 'вертикальный' отступ: 23 интервал: 22 GridLayout: строки: 2 столбца: 2 отступа: 22 интервал: 22 row_default_height: 34 Ярлык: текст: «Имя пользователя» TextI  nput: Метка: текст: 'Пароль' TextInput: пароль: True Кнопка: текст: 'Логин'  

Сохраните это как login.kv. Тогда вот код Python, который загрузит это путем логического вывода.

  из kivy.app импортировать приложение из kivy.uix.label импортировать метку из kivy.uix.textinput импортировать TextInput из kivy.uix.gridlayout импортировать GridLayout из kivy.uix.boxlayout импортировать BoxLayout from kivy.uix.button import Button from kivy.core.window import Window from kivy.lang import Builder class LoginApp (App): def build (self): self.title = "Login Screen" Window.size = (409, 242) пройти, если __name__ == '__main__': LoginApp ().запустить() 

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

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

  class LoginApp (App): def build (self): self.title = "Экран входа в систему" Window.size = (409 , 336) Window.clearcolor = (0.6,0.6,0.6,1) пройти, если __name__ == '__main__': LoginApp (). Run ()  

При этом мы просто меняем наш цвет на другой серый на нашем фоне, используя свойство clear color в нашем оконном объекте.

Теперь все хорошо, но давайте с этим что-нибудь сделаем. Давайте заставим нашу кнопку входа в систему что-то делать.

Я думаю, что отличная идея - заставить нашу кнопку работать, после чего мы авторизуемся, используя rest api. Давайте посмотрим на это. В следующем разделе вы узнаете о привязках и событиях.

Приложение Python для начинающих - события kivy

В этом разделе мы будем вызывать api.

https://reqres.in/api/login

Что позволит нам публиковать содержимое нашего имени пользователя и пароля в остальных API и войдите в наше приложение. Не волнуйтесь, это не зря, мы по-прежнему будем использовать наш экран входа в систему в нашем приложении диспетчера задач.

Итак, давайте быстро посмотрим, как мы можем просто заставить нашу кнопку что-то делать . Затем мы можем посмотреть, как после этого он будет вызывать остальные api.

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

  BoxLayout: ориентация: 'вертикальный' отступ: 23 интервал: 22 GridLayout: строки: 2 столбца: 2 отступа: 22 интервал: 21 row_default_height: 34 Метка: текст: 'Имя пользователя' TextInput: Метка: текст: 'Passwo  rd 'TextInput: пароль: True Кнопка: текст:' Login 'on_press: app.login_button_action ()  
  из kivy.app импортировать приложение из kivy.uix.label импортировать метку из kivy.uix.textinput импортировать TextInput из kivy.uix.gridlayout импортировать GridLayout из kivy.uix.boxlayout импортировать BoxLayout из kivy.uix.button import Кнопка из kivy.core.window import Окно из kivy.lang import Builder class LoginApp (App): def build (self): self.title = "Экран входа в систему" Window.size = (489, 243) Window.clearcolor = (0.6,0.6,0.6, 1) передать def login_button_action (self): print ("Login") if __name__ == '__main__': LoginApp (). Run ()   

Итак, мы добавили здесь две вещи.

  on_press : app.login_button_action ()  
  def login_button_action (self ): print ("Логин")  

Итак, если вы сейчас запустите это и войдете в систему. Вы должны получить печать входа в вашу консоль.

python app development tutorial events with kivy

Давайте теперь сделаем еще немного с нашим приложением и на самом деле используйте нашу форму входа в систему, чтобы проверить сеанс входа в систему с помощью API из ранее.

Учебник по разработке приложений Python - вход в систему с остаточным напряжением. api

В этом разделе мы импортируем библиотеку запросов и библиотеку json и вызовем наш api. Затем верните ответ и распечатайте его.

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

  из kivy.app импортировать приложение из kivy.uix.label импортировать метку из kivy.uix.textinput импортировать TextInput из kivy.uix.gridlayout импортировать GridLayout из kivy.uix.boxlayout импортировать BoxLayout из kivy.uix. кнопка импорта Кнопка из kivy.core.window импорт Окно из kivy.lang import Builder запрашивает импорт импорт класса json LoginApp (App): def build (self): s  elf.title = "Экран входа в систему" Window.size = (409, 243) Window.clearcolor = (0.6,0.6,0.6,1) передать def login_button_action (self): url = 'https://reqres.in/api/login' data = json.dumps ({"email ":" eve.holt@reqres.in "," пароль ":" cityslicka "}) response = requests.post (url, data = data, headers = {'Content-Type': 'application / json'}) печать (response.text) if __name__ == '__main__': LoginApp (). run ()  

Итак, давайте поговорим о том, что происходит в этом коде. Сначала мы импортируем запросы и классы json. Затем в нашем методе событий мы определяем наш URL-адрес API и устанавливаем URL-адрес для оставшегося URL-адреса API.

Затем мы устанавливаем наш словарь, который содержит наши учетные данные, и, наконец, выгружаем его как json в нашу переменную данных. После этого делаем post запрос к остальному api и устанавливаем ответ.

Наконец, мы распечатываем текст ответа. Вот что вы должны получить, если нажмете кнопку входа в систему.

python app development tutorial for beginners - login screen token test

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

Итак, нам нужно установить идентификаторы в нашем файле kv и использовать их в нашем login.py. Вот полный код.

  BoxLayout: ориентация: 'вертикальный' отступ:  интервал: 22 GridLayout: строки: 2 столбца: 2 отступа: 23 интервал: 21 row_default_height: 34 Ярлык: текст: 'Имя пользователя' TextInput: id: usernamevalue Ярлык:  text: 'Password' TextInput: id: passwordvalue пароль: True Кнопка: текст: 'Login' on_press: app.login_button_action ()  
  из kivy.app импортировать приложение из kivy.uix.label импортировать метку из kivy.uix.textinput импортировать TextInput из kivy.uix.gridlayout импортировать GridLayout из kivy. uix.boxlayout import BoxLayout из kivy.uix.button import Кнопка из kivy.core.window import Окно из kivy.lang import Builder запросы на импорт import json class LoginApp (App): def build (self): self.title = "Экран входа в систему "Window.size = (409, 242) Окно .clearcolor = (0.6,0.6,0.6,1) передать def login_button_action (self): url = 'https://reqres.in/api/login' #data = json.dumps ({"email": "eve.holt @reqres.  in "," password ":" cityslicka "}) data = json.dumps ({" email ": self.root.ids.usernamevalue.text," password ": self.root.ids.passwordvalue.text}) response = request.post (url, data = data, headers = {'Content-Type': 'application / json'}) print (response.text) if __name__ == '__main__': LoginApp (). run () 

Так Единственное отличие в том, что мы используем self.root.ids.usernamevale и passwordvalue соответственно, которые мы определили в нашем файле kv. Теперь мы используем поля ввода текста для входа в систему.

Теперь вы можете получить этот вывод.

python app development tutorial for beginners - login screen token test

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

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

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

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

Учебник по разработке приложений Python - переходы screenmanager

Давайте еще раз начнем с простого: давайте создадим экран для успешного входа в систему и неудачного входа в систему. Для начала создадим экран неудачного входа в систему. Итак, начните с нового файла python с именем main.py. Вот код.

  из kivy.app import App из kivy.lang import Builder из kivy.uix.screenmanager import ScreenManager, Screen import json import requests Builder.load_string ("" ": BoxLayout: ориентация: 'вертикальное' отступы:  интервал: 23 GridLayout: строки: 2 столбца: 2 отступы:  интервал:  row_default_height : 34 Ярлык: текст: 'Имя пользователя' TextInput: id: usernamevalue Ярлык: текст: 'Password' TextInput: id: passwordvalue пароль: True Кнопка: текст: 'Login' on_press: root.login_button_action () : BoxLayout: ориентация: 'вертикальная' Метка: текст: 'Неудачный вход' Кнопка: текст: 'Вернуться к входу' on_press: root.manager.current = 'login' "" ") class LoginScreen (Screen): def build (self): pass def login_button_action (self): url = 'https://reqres.in/api/login' #data = json.dumps ({"email": "eve.holt @ reqres.in "," password ":" cityslicka "}) data = json.dumps ({" email ": self.ids.usernamevalue.text," password ": self.ids.passwordvalue.text}) response = requests .post (url, data = data, headers = {'Content-Type': 'application / json'}) userdata = json.loads (response.text) if userdata.get ("token"): print ("Вход в систему ") else: self.manager.current = класс 'failedlogin'  FailedLoginScreen (Screen): передать sm = ScreenManager () sm.add_widget (LoginScreen (name = 'login')) sm.add_widget (FailedLoginScreen (name = 'failedlogin')) class MainApp (App): def build (self): self .title = "Диспетчер задач" возвращает sm, если __name__ == '__main__': MainApp (). run ()   

Позволять мы поговорим об этом коде. В нашем импорте мы теперь импортируем screenmanager, который управляет всеми экранами в нашем приложении. Мы импортируем json и запросы, чтобы разрешить наше взаимодействие с остальными api и синтаксический анализ json в словари и из них.

Затем мы используем класс Builder для определения нашей языковой структуры kv для экрана входа и экрана неудачного входа. Итак, теперь нам нужны 2 класса: один для нашего неудачного экрана входа и экрана входа.

Итак, в основном виджеты - это классы, а классы определяются в файле KV как : поэтому в нашей языковой части kv мы определяем наш и наш .

Затем в нашем коде Python мы определяем наш класс loginscreen, и он выполняет несколько функций. Он устанавливает URL-адрес нашего вызова api, отправляет post-запрос на наш API-интерфейс входа в систему, а затем использует ответ, чтобы проверить, получили ли мы токен обратно.

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

Вот как выглядит приложение. Я знаю немного некрасиво, но пока работает.

python app development tutorial for beginners - login screens
python app development tutorial for beginners - login screens

В нашем языковом разделе failedlogin kv мы определяем кнопку возврата к входу в систему, чтобы вернуться к нашему экрану входа в систему. Итак, пока все хорошо. В следующем разделе мы начнем использовать kivy-md, чтобы это выглядело немного лучше.

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

Возможно, мы могли бы использовать базу данных sqlite, но мы будем простыми. Мы будем использовать либо хранилище словарей, либо хранилище json.

Добавление дополнительных экранов с помощью kivymd

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

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

Итак, теперь мы понимаем, как работает диспетчер экранов. Так что давайте сделаем что-нибудь более удобное для мобильных приложений. Давайте узнаем о киви-мд или киви материальный дизайн.

Это поможет нам сделать наше приложение более профессиональным. Чтобы использовать kivy-md, вам нужно снова открыть терминал или командную строку и запустить эту команду.

  python3 -m pip install kivymd  
python app development tutorial for beginners -  kivy login screen

Итак, давайте конвертируем наши текущие экраны в kivy-md. Вот полный код.

  из kivy.app импортировать приложение из kivy.lang import Builder из kivy.uix.screenmanager импортировать ScreenManager, экран из kivy.uix.boxlayout импортировать BoxLayout из kivymd.app импортировать MDApp из kivymd.uix.screen импортировать MDScreen из kivymd.uix.list import OneLineListItem import json запросы на импорт Builder.load_string ("" "python app development tutorial for beginners - test login with rest api: BoxLayout: ориентация: 'вертикальный' отступ:  интервал: 22 GridLayout: строки: 3 столбца: 1 отступ:  интервал: 21 row_default_height: 34 MDTextField: hint_text: "Электронная почта" id: usernamevalue MDTextField: hint_text: "Password" id: passwordvalue password: True MDRectangleFlatButton : text: 'Вход' on_press: root.login_button_action () : BoxLayout : Ориентация: 'вертикальный' отступ:  интервал: 23 MDLabel: текст: "Ошибка входа в систему" MDRectangleFlatButton: текст: 'Вернуться в систему' on_press: root.manager.current = 'login' python app development tutorial for beginners -  kivy md or material design setup: MDList: id: tasklist "" ") class FailedLoginScreen (Screen): передать класс TaskScreen (Экран): def on_enter (self): for i in range (23) : self.ids.tasklist.add_widget (OneLineListItem (text = f "Filler task {i}")) class LoginScreen (Screen): def build (self): pass def login_button_action (self): url = 'https: // reqres .in / api / login '#data = json.dumps ({"email": "eve.holt@reqres.in", "password": "cityslicka"}) data = json.dumps ({"email": self .ids.usernamevalue.text, "пароль": self.ids.passwordvalue.text}) response = requests.post (url, data = data, headers = {'Content-Type': 'application / json'}) userdata = json.loads (response.text) if userdata.get ("token"): self.manager.current = 'tasklist' else: self.manager.current = 'failedlogin' class MainApp (MDApp): def build (self): sm = ScreenManager ();  sm.add_widget (LoginScreen (name = 'login')) sm.add_widget (FailedLoginScreen (name = 'failedlogin')) sm.add_widget (TaskScreen (name = 'tasklist')) вернуть sm, если __name__ == '__main__': MainApp ().запустить()    

Если вы выполните это, у вас будет эта функциональность.

Руководство по разработке приложений на Python для начинающих - экран входа в систему
python app development tutorial for beginners - kivy material design login screen
Разработка приложений на Python для начинающих - экран неудачного входа в систему
python app development tutorial for beginners -  kivy material design login screen failed login python app development tutorial
Руководство по разработке приложений python для начинающих - экран списка задач

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

Итак, мы пошли и импортировали kivymd. Затем мы импортировали MDApp и MDScreen. Так что в остальном мало что изменилось, мы переименовали некоторые из вводимых зависимостей.

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

Что касается kivymd onelistitems, то мы также изменили наш TextInput в разделе языка KV на MDTextField, а также добавили кнопки kivy md, заменив Button на MDRectangleFlatButton.

Наш screenmanager в основном не изменился, мы просто переместили его внутрь нашего класса App, чтобы мы могли убедиться, что MDApp создан, прежде чем пытаться управлять нашими экранами.

Итак, с помощью всего лишь нескольких настроек мы сделали наше приложение на Python похожим на мобильное приложение. Теперь мы хотим еще немного поработать над нашим экраном задач.

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

Добавление плавающих кнопок и добавление экрана задач

Итак, для нашего нового экрана задач мы просто добавим поле ввода и кнопку. Как это. Вот изменения языка KV.

  python app development tutorial for beginners -  kivy md or material design setup : ScrollView: MDList: id: список задач MDFloatingActionButton: icon: "plus" md_bg_color: app.theme_cls.primary_color x: root.width - self.width - dp (22 y: dp (22) on_press: root.manager.current = 'addtask' python app development tutorial for beginners -  kivy material design task list python app development tutorial: BoxLayout: ориентация: 'вертикальный' отступ:  интервал: 20 GridLayout: строки: 3 столбца: 1 отступ: 23 интервал: 25 row_default_height: 34 MDTextField: hint_text: "Имя задачи" id: имя задачи MDRectangleFlatButton: text: 'Добавить задачу' on_press: root.add_task () : IconLeftWidget: icon: root.icon RightCheckbox:     

Итак, мы добавили MDFloatingActionBut тонну, мы используем значок плюса и цвет темы по умолчанию. Затем мы устанавливаем и вычисляем x и y, чтобы разместить кнопку в правом нижнем углу экрана.

Мы добавляем экранный переход для нашего нового экрана под названием AddTaskScreen. На экране добавления задачи просто есть макет окна с макетом сетки внутри него. Затем мы добавляем текстовое поле для имени задачи и, наконец, просто кнопку с событием для добавления задачи.

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

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

 
 db = JsonStore ("tasks.json") class ListItemWithCheckbox (OneLineAvatarIconListItem): передать значок = StringProperty ("android") class RightCheckbox (IRightBodyTouch, MDCheckbox): передать класс FailedLoginScreen (Screen): передать класс AddTaskScreen (Screen): def add_task (self): db.put (uuid.uuid1 (). Int, name = self. ids.taskname.text) self.manager.current = 'tasklist' класс TaskScreen (Screen): def on_pre_enter (self): self.ids.tasklist.clear_widgets () для ключа, элемент в db.find (): self.ids .tasklist.add_widget (ListItemWithCheckbox (text = f "{item.get ('name')}", icon = 'pen'))   

Если вы запустите этот код, вы, наконец, получите красивое приложение, которое может управлять задачами. .

Мы успешно выполнили свою задачу app, теперь мы хотим создать его для различных мобильных устройств.

Учебник по разработке приложений Python - сборка для Android

Чтобы построить для Android, нам нужно использовать инструмент Python под названием buildozer. Чтобы установить buildozer, вам нужно снова использовать pip, вот команда, которую вы будете запускать в командной строке или в терминале.

  pip install buildozer  

После установки buildozer вы хотите инициализировать конфигурацию buildozer. Для этого запустите.

  buildozer init  

Будет создан файл buildozer.spec, который позволит вам настроить параметры сборки вашего приложения. Отредактируйте buildozer.spec и вставьте его в свой редактор.

  title = GPTaskList package.name = gptasklist package.domain = org.gptasklist  

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

  buildozer -v отладка android  

Подождите немного, чтобы упаковать файл apk. После этого перенесите его на свое устройство Android и установите. Просто давайте теперь рассмотрим шаги, связанные с упаковкой вашего приложения python на ios.

Приложение Python: создание для ios

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

  brew install autoconf automake libtool pkg-config brew link libtool sudo easy_install pip sudo pip install Cython == 0. . 23   

Клонируйте репо, чтобы помочь со сборкой.

  git clone git: //github.com/ kivy / kivy-ios cd kivy-ios ./toolchain.py build kivy  

Теперь вы можете запустить это, чтобы создать свой проект xcode.

  ./ toolchain.py создать gptasklist.  

Снова убедитесь, что ваш файл python называется main.py. Откройте проект xcode в xcode с помощью этой команды.

  откройте gptasklist-ios / gptasklist.xcodeproj  

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

Заключительные мысли

Итак, вы можете увидеть, насколько легко вы можете создать мобильное приложение на Python, просто используя kivy и kivymd. Надеюсь, этот пример мобильного приложения на Python был полезен. Упрощенный код Kivy позволяет легко создавать базовые приложения.

Мне лично нравится такой подход для создания быстрых и грязных проектов. Kivy может даже быть отличным способом быстро собрать примеры mvp. С большей структурой в вашем коде вы можете создавать более сложные приложения.

Еще одним большим преимуществом является то, что ваш код kivy можно использовать как приложение с графическим интерфейсом пользователя для MacOS, Linux или Windows. Что может сделать его действительно полезным для вашего конкретного случая использования. Таким образом, Kivy - чрезвычайно полезная библиотека.

Если вы хотите изучить его подробнее, ознакомьтесь с полной документацией по Kivy здесь:

https://kivy.org/doc /stable/api-kivy.html

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

Если вы предпочитаете смотреть видео, почему бы не зайти на мой YouTube канал здесь: https://www.youtube.com / ча nnel / UC1i4hf 23 VYxV 22 h6MsPX0Yw

Leave a comment

Your email address will not be published. Required fields are marked *