Рубрики
Без рубрики

Создайте нативное приложение Android пользователя с Python и Beeware.

Создайте нативное приложение Android пользователя с Python и Beeware. Tagged с Python, Beeware, Android, iOS.

Beeware это набор Инструменты и библиотеки Это позволяет писать собственные приложения пользовательского интерфейса в Python и с одной кодовой базой, выпустить их на нескольких платформах, таких как iOS, Android, Windows, MacOS, Linux, Web и TVOS.

Приложения Java – «написать один раз, запустить где угодно». Приложения Beeware «писать один раз, развернуть повсюду».

Поскольку у меня нулевой опыт создания мобильных приложений для iOS или Android, давайте выясним, как быстро я смогу развернуть мобильное приложение Android с Beeware.

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

Примечание. Я использую дистрибуцию Linux на основе Ubuntu (Ubuntu 18.04), поэтому мои инструкции будут таковыми.

  • Установить Питон
  • Запустите это в своем терминале, чтобы установить зависимости.
$ sudo apt-get update
$ sudo apt-get install git python3-dev python3-venv libgirepository1.0-dev libcairo2-dev libpango1.0-dev libwebkit2gtk-4.0-37 gir1.2-webkit2-4.0
  • Создать и активировать виртуальную среду
$ mkdir weatherman
$ cd weatherman
$ python3 -m virtualenv .venv
$source .venv/bin/activate
  • Установить портфель Анкет В вашей активированной виртуальной среде запустите это в терминале:
$ pip install briefcase
  • Установить httpx
pip install httpx

Создайте приложение скелета с портфелем Все еще в вашем терминале, запустите команду ниже:

$ briefcase new

Портфель задаст вам набор вопросов и использует эти ответы для настройки вашего приложения:

Let's build a new Briefcase app!


First, we need a formal name for your application. This is the name that will
be displayed to humans whenever the name of the application is displayed. It
can have spaces and punctuation if you like, and any capitalization will be
used as you type it.

Formal Name [Hello World]: weatherman 

Next, we need a name that can serve as a machine-readable Python package name
for your application. This name must be PEP508-compliant - that means the name
may only contain letters, numbers, hyphens, and underscores; it can't contain
spaces or punctuation, and it can't start with a hyphen or underscore.

Based on your formal name, we suggest an app name of 'weatherman',
but you can use another name if you want.

App Name [weatherman]: weatherman

Now we need a bundle identifier for your application. App stores need to
protect against having multiple applications with the same name; the bundle
identifier is the namespace they use to identify applications that come from
you. The bundle identifier is usually the domain name of your company or
project, in reverse order.

For example, if you are writing an application for Example Corp, whose website
is example.com, your bundle would be ``com.example``. The bundle will be
combined with your application's machine readable name to form a complete
application identifier (e.g., com.example.notepad).

Bundle Identifier [com.example]: com.exampe.notepad

Briefcase can manage projects that contain multiple applications, so we need a
Project name. If you're only planning to have one application in this
project, you can use the formal name as the project name.

Project Name [weatherman]: weatherman

Now, we need a one line description for your application.

Description [My first application]: A Simple Android weather app.

Who do you want to be credited as the author of this application? This could be
your own name, or the name of your company you work for.

Author [Jane Developer]: Pystar

What email address should people use to contact the developers of this
application? This might be your own email address, or a generic contact address
you set up specifically for this application.

Author's Email [pystar@notepad.exampe.com]: dev@gmail.com

What is the website URL for this application? If you don't have a website set
up yet, you can put in a dummy URL.

Application URL [https://weatherman.exampe.com/weatherman]:      

What license do you want to use for this project's code?

Select one of the following:

    [1] BSD license
    [2] MIT license
    [3] Apache Software License
    [4] GNU General Public License v2 (GPLv2)
    [5] GNU General Public License v2 or later (GPLv2+)
    [6] GNU General Public License v3 (GPLv3)
    [7] GNU General Public License v3 or later (GPLv3+)
    [8] Proprietary
    [9] Other

Project License [1]: 2

What GUI toolkit do you want to use for this project?

Select one of the following:

    [1] Toga
    [2] PySide2
    [3] PursuedPyBear
    [4] None

GUI Framework [1]: 1

Generating a new application 'weatherman'

Приложение «Помощник» было сгенерировано. Чтобы запустить ваше приложение, введите свой терминал:

$ cd weatherman
$ briefcase dev

Примечание: внешний вид вашего приложения определяется вашим Windows Manager

Приложение откроется в новом окне и в моей системе Linux + I3WM, приложение выглядит так:

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

Приложение Beeware – это тога. Экземпляр приложения и является коллекцией коробок и виджетов. Коробка может содержать другие вложенные коробки и виджеты. Виджет похож на виджет HTML, и примеры виджетов Beeware включают в себя:

  1. Кнопки
  2. Ярлыки
  3. Ввод текста
  4. PasswordInput (см. Больше) [ https://toga.readthedocs.io/en/latest/reference/api/widgets/index.html ]

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

Давайте добавим некоторую логику в приложение Skeleton, чтобы сделать его что -то полезное. Вам придется создать учетную запись на Weatherstack И получите токен, вашему приложению понадобится оно, чтобы сделать вызовы HTTP в API погоды.

"""
A simple weather app.
"""
from pprint import pprint
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW, LEFT, RIGHT
import httpx

TOKEN = "" #Enter your weatherstack.com token here.

BASE_URL="http://api.weatherstack.com/current"

class weatherman(toga.App):

    def startup(self):
        """
        Construct and show the Toga application.

        Usually, you would add your application to a main content box.
        We then create a main window (with a name matching the app), and
        show the main window.
        """
        main_box = toga.Box(style=Pack(direction=COLUMN))

        location_label = toga.Label("Location", style=Pack(padding=(0, 5)))
        self.location_input = toga.TextInput(style=Pack(flex=1))

        location_box = toga.Box(style=Pack(direction=ROW, padding=5))
        location_box.add(location_label)
        location_box.add(self.location_input)

        weather_box_label = toga.Label("Weather Results", style=Pack(padding=(0, 5)))
        self.weather_box_input = toga.TextInput(readonly=True, style=Pack(flex=1))
        weather_box = toga.Box(style=Pack(direction=ROW, padding=5))
        weather_box.add(weather_box_label)
        weather_box.add(self.weather_box_input)

        button = toga.Button("Fetch weather", on_press=self.weather, style=Pack(padding=5))

        main_box.add(location_box)
        main_box.add(button)
        main_box.add(weather_box)

        self.main_window = toga.MainWindow(title=self.formal_name)
        self.main_window.content = main_box
        self.main_window.show()

    def weather(self, widget):
        params = dict(access_key=TOKEN, query=self.location_input.value)
        resp = httpx.get(BASE_URL, params=params).json()
        try:
            self.weather_box_input.value = f'The weather report for  {resp["request"]["query"]} \
            {resp["current"]["temperature"]}  \
            {resp["current"]["weather_descriptions"][0]} \
            {resp["current"]["feelslike"]}'
        except ValueError:
            self.weather_box_input.value = "Location unknown!"



def main():
    return weatherman()

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

briefcase create

Чтобы ваше приложение было выполнено на вашей целевой платформе (в нашем случае Android) оно должно быть скомпилировано:

briefcase build

Чтобы выяснить, была ли наша компиляция успешной, вы можете запустить его:

briefcase run

Это запускает скомпилированное приложение, а не код Python, с которым мы работали. Если ваше приложение успешно выполняется, это означает, что предыдущий шаг компиляции был успешным.

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

briefcase package

Составьте приложение для Android:

briefcase create android

Составьте приложение в файл приложения Android APK:

briefcase build android

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

  1. Устройство виртуального эмулятора
  2. На физическом устройстве

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

!

TL: DR: команды Beeware Портфель новый – создать новое приложение скелета Beeware Портфель Dev – Запустите приложение Beeware в разработке Портфель CREATION – Начните упаковать приложение для распространения Портфель сборка – компиляция приложение портфель запустить – запустить скомпилированное приложение Пакет портфеля – упаковка скомпилированное приложение Портфель Создать Android Портфель сборка Android Портфель запустить Android

Оригинал: “https://dev.to/pystar/build-a-native-ui-android-app-with-python-and-beeware-16me”