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 включают в себя:
- Кнопки
- Ярлыки
- Ввод текста
- 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, вы можете запустить его в:
- Устройство виртуального эмулятора
- На физическом устройстве
Мы погрузимся глубоко, чтобы запустить 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”