
Eu estudo python
kivy e decidi escrever uma pequena aplicação para diversificar minha dieta. Eu decidi compartilhar. Este artigo é para iniciantes no kivy. O aplicativo leva cerca de 100 linhas de código.
Objetivo de criar um
aplicativo de bicicleta:
- Evite repetições frequentes nos alimentos. Para não comer o mesmo prato com muita frequência.
- Não se esqueça dos pratos que comi, esqueci, e durante anos não voltei a eles, porque não me lembrava de brega. Isso acontece comigo.
Introdução
Você não pode ler na introdução nenhuma letra.
Eu tinha que morar em um país, em um hotel, onde me davam ovos diariamente no café da manhã e nada mais, então um mês depois comecei a coçar. Ele procurou ajuda médica, embora nunca tivesse sofrido nada parecido antes. Ensinado por experiência amarga, depois disso, ele decidiu permitir o menor número possível de repetições nos alimentos, para que nada se acumulasse no corpo. Esta é a minha experiência pessoal, apenas digo, sem impor. Talvez não haja regras sem exceção, provavelmente aveia pode ser consumida todos os dias por décadas.
Screenshots

Suponha que minha dieta seja composta por 50 pratos. Por exemplo, eu comi uma omelete hoje. Clico no botão, e a omeleta está na linha 50 da fila, e na frente há 49 pratos que eu vou comer para chegar à omelete novamente. Essa é toda a lógica do aplicativo. (Nas capturas de tela, os pratos são cozidos, todas as coincidências são aleatórias, elas não têm nada a ver com minha dieta real).
Código-fonte e explicações
main.pyfrom kivy.app import App from kivy.uix.button import Button from kivy.uix.boxlayout import BoxLayout from kivy.uix.screenmanager import ScreenManager, Screen from kivy.uix.recycleview import RecycleView from kivy.uix.gridlayout import GridLayout from kivy.core.window import Window from kivy.config import ConfigParser from kivy.uix.textinput import TextInput from kivy.uix.label import Label from kivy.metrics import dp from datetime import datetime import os import ast import time class MenuScreen(Screen): def __init__(self, **kw): super(MenuScreen, self).__init__(**kw) box = BoxLayout(orientation='vertical') box.add_widget(Button(text=' ', on_press=lambda x: set_screen('list_food'))) box.add_widget(Button(text=' ', on_press=lambda x: set_screen('add_food'))) self.add_widget(box) class SortedListFood(Screen): def __init__(self, **kw): super(SortedListFood, self).__init__(**kw) def on_enter(self):
Eu deliberadamente não usei arquivos kv, pois o código é fornecido para fins educacionais, para pessoas familiarizadas com python. Tudo está escrito em python. Nas explicações, não vou me debruçar sobre a explicação do código python, mas continuarei imediatamente para os recursos específicos do Kivy.
Vamos lá:
class MenuScreen(Screen):
A classe é responsável por iniciar a página inicial do aplicativo, ela pode ser chamada de qualquer coisa, por exemplo, StartScreen. E herda o módulo kivy Screen . O aplicativo consiste em 3 janelas, essas janelas são criadas usando este módulo box = BoxLayout(orientation='vertical')
BoxLayout divide a tela em partes iguais, horizontal por padrão, eu escrevi orientação = 'vertical' para dividir verticalmente Button(text=' ', on_press=lambda x: set_screen('list_food'))
Botão - cria botões, on_press define qual função será iniciada quando pressionada.
.add_widget()
- adiciona botões a camadas e janelas self.layout = GridLayout(cols=1, spacing=10, size_hint_y=None)
O layout da grade lembra um pouco a tag da tabela em html, indicando colunas - o número de colunas ou linhas - o número de linhas.
Você pode especificar parâmetros ou um parâmetro.
A tela será dividida no número desejado de compartimentos.
root = RecycleView(size_hint=(1, None), size=(Window.width, Window.height))
RecycleView - o módulo com o qual criar uma rolagem vertical no meu aplicativo. Um recurso do RecycleView é que ele cria pergaminhos com elementos da mesma largura e altura. E funciona rápido. E existe um módulo ScrollView , ele pode criar pergaminhos com elementos de tamanhos diferentes, mas funciona mais lentamente que o RecycleView
config.get('General', 'user_data')
- no código tais linhas são freqüentemente encontradas. Acabei de usar o repositório Config kivy nativo como armazenamento de dados. Bem, existem milhares de pratos, não faz sentido cercar um jardim com sqlite e algo assim. Todos os dados são armazenados em um arquivo. Este arquivo é armazenado na mesma pasta que o próprio aplicativo, se você especificar self.directory como no meu código, mas poderá especificar self.user_data_dir para que esse arquivo não seja destruído durante a permutação ou atualizações.
Executando no windows, linux e macos
O princípio para todos os sistemas operacionais é o mesmo:
- Colocamos python3
- Colocamos kivy
- Criamos o arquivo main.py e colamos todo o código acima nele
- Executar por equipe
python3 main.py
O programa deve funcionar.
Crie um arquivo apk e execute no telefone com o android
Portanto, temos um arquivo de código de programa escrito em python. Como agora criar um aplicativo para que ele possa ser iniciado em um telefone com Android? Anteriormente, era um processo bastante sofisticado que exigia habilidades e danças com um pandeiro. Agora isso não é um problema.
Aqui está uma instrução passo a passo:
- Baixe uma máquina virtual pronta dos desenvolvedores kivy, na qual tudo já está configurado. https://github.com/Zen-CODE/kivybits/blob/master/KivyCompleteVM/ReadMe.txt . Senha: kivy
- Nós o lançamos na Caixa Virtual.
- Abra o terminal e insira os seguintes comandos:
- O último comando cria a pasta bin no mesmo diretório, em bin você encontrará o arquivo foodoptions-0.1-debug.apk, que você pode enviar para o seu telefone, instalar e aproveitar o aplicativo
Como fazer upload de arquivo apk para o telefone?Obviamente, você pode fazer o que quiser, enviá-lo por correio, colocá-lo em algum lugar, colocá-lo em um telegrama etc. e depois fazer o download do aplicativo para o seu telefone.
Mas existe uma ferramenta especializada para isso. Ativamos o modo de desenvolvedor no telefone, conectamos-o com um cabo USB. A máquina virtual deve verificar se você conectou o telefone. Em seguida, instale adb:
sudo apt install adb
Após a instalação, vá para a pasta bin e digite o comando
adb install -r foodoptions-0.1-debug.apk
E você pode ver o aplicativo no telefone cerca de um minuto depois de vermos
Sucesso no console.
kivy@kivy-complete:~/Project/FoodOptions/bin$ adb install -r foodoptions-0.1-debug.apk 342 KB/s (10083019 bytes in 28.730s) Success kivy@kivy-complete:~/Project/FoodOptions/bin$
Se de repente o aplicativo travar ou não se comportar conforme o esperado, existe um comando para exibir erros
adb logcat| grep python
Nome do aplicativo russoSe você deseja que seu aplicativo seja chamado em russo, por exemplo, "Diário Alimentar", é necessário fazer alterações no arquivo:
.buildozer/android/platform/build/dists/foodoptions/templates/strings.tmpl.xml
O nome russo do aplicativo está escrito na tag appName, esta pasta é criada após o primeiro lançamento da depuração do buildozer android. Após editar o arquivo, volte para a pasta FoodOptions e execute o buildozer android debug novamente. O arquivo será montado de uma nova maneira. Após a instalação no telefone, o nome do programa será escrito em russo.
Sobre o arquivo buildozer.specAqui está o meu arquivo no github:
buildozer.specEste arquivo informa ao buildozer exatamente como criar o pacote.
Existem muitas variações diferentes. Quem se importa, em seguida, insira o comando dentro da máquina virtual:
cd /tmp buildozer init
Um arquivo buildozer.spec padrão será criado com vários comentários e explicações. Por exemplo, se você deseja algum ícone para seu aplicativo, indique na linha:
icon.filename = %(source.dir)s/data/icon.png
seu arquivo com um ícone. E o aplicativo já será montado com o seu ícone.
Se você precisar carregar algum módulo específico que não faça parte da biblioteca oficial do python, isso será feito na linha requirements =. Em geral, a história sobre o arquivo buildozer.spec pode levar um artigo inteiro, ou até dois.
Faça o download de um aplicativo no Google PlayTemos que registrar, passar por todos os procedimentos, pegar as chaves. E então execute:
sudo apt install zipalign buildozer android release jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore /path/keystore bin/apk-unsigned.apk apkname zipalign -v 4 bin/apk-apkname-unsigned.apk bin/apk-apkname-release.apk
O arquivo resultante apk-apkname-release.apk é enviado ao Google Play.
Referências
Em princípio, qualquer pessoa que possa programar em python poderá alterar o aplicativo e adicionar facilmente o seguinte:
- Adicione design para deixar o aplicativo bonito
- Use arquivos kv para facilitar o código. Eu daria uma analogia: aqueles que estão familiarizados com a programação da web, imaginam código sem modelos e modelos html. Remover botões, camadas e outras coisas nos arquivos kv é algo como jinja2 para um programador da web. A lógica permanece nos arquivos .py e os bugigangas nos arquivos kv.
- Adicionar calorias contadas, proteínas, carboidratos, gorduras (BJU)
- Adicione a capacidade de fotografar pratos