Python no desenvolvimento móvel



Não é segredo que o escopo do Python é bastante amplo: desde tecnologias baseadas na Web, indústria de jogos e terminando com projetos da NASA . O Python funciona em quase todos os lugares: de computadores portáteis e smartphones a servidores de rede e em quase todas as plataformas conhecidas, como Windows, Linux / UNIX, macOS, Palm OS, Raspberry PI e assim por diante. Graças à estrutura do Kivy, em 2011 o Python também dominou as plataformas móveis em termos de desenvolvimento de aplicativos para iOS e Android , e em 2015, usando a biblioteca KivyMD, o Python aprendeu a usar o Design de materiais .

A biblioteca KivyMD é uma coleção de widgets no estilo de Design de materiais , para uso na estrutura de plataforma cruzada Kivy . No meu artigo anterior, KivyMD - life life , lançado há um ano, eu já falei sobre o fork desta biblioteca, mas em edições e no correio muitas vezes recebi notificações de que os recursos declarados no fork não estão disponíveis ao instalar o KivyMD a partir do PyPi . E foi realmente assim, porque o PyPi continha uma versão antiga da biblioteca há quatro anos do repositório GitLab , que não era mais suportada pelo autor e, como não queríamos usar um novo nome para o fork, como o KivyMD-fork, e carregar o pacote no PyPi com este nome, foi decidido escrever para o autor de KivyMD Andrés Rodríguez (@mixedCase_) e pedir para ele remover o pacote. Depois de longas negociações, Andre nos convidou para o Pacote Python , desde que ele permanecesse coautor da biblioteca. Então agora o repositório oficial da biblioteca está aqui e nossas atualizações mais recentes estão disponíveis no PyPi .

Então, que mudanças na biblioteca aconteceram um ano depois? Graças às pessoas que usam o KivyMD em seus projetos, eliminamos muitos erros. Existem 81 perguntas fechadas no repositório. Isso se você não levar em consideração o fato de que a maior parte dos problemas é resolvida no suporte ao usuário do chat online do Discord . Existem seções em russo e em inglês. Atualmente, nem todas as especificações de design de material estão implementadas, porque quase duas pessoas trabalham na biblioteca em seu tempo livre. O que já foi implementado e o que eu gostaria de implementar pode ser visto nesta lista . Está longe de estar completo, mas você pode complementá-lo, pois o acesso à edição está aberto a todos. Aqui estão alguns novos widgets:

Sugestão


Dica de ferramenta de design de material

exemplo de código
from kivy.lang import Builder from kivy.factory import Factory from kivymd.app import MDApp Builder.load_string(''' #:import random random #:import hex_colormap kivy.utils.hex_colormap #:import get_color_from_hex kivy.utils.get_color_from_hex #:import md_icons kivymd.icon_definitions.md_icons #:set ICONS list(md_icons.keys()) <IconButtonTooltips@MDIconButton+MDTooltip> <ExampleTooltips@BoxLayout> orientation: 'vertical' MDToolbar: title: "Example Tooltips" md_bg_color: get_color_from_hex(hex_colormap["crimson"]) elevation: 10 left_action_items: [['dots-vertical', lambda x: None]] tooltip_text: "MDToolbar" Screen: BoxLayout: size_hint: None, None size: self.minimum_size padding: "10dp" spacing: "10dp" pos_hint: {'center_x': .5, "center_y": .9} IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" IconButtonTooltips: icon: random.choice(ICONS) tooltip_text: "MDIconButton" ''') class Test(MDApp): def build(self): return Factory.ExampleTooltips() Test().run() 



* Exemplo de Mac OS



Barra de aplicativos inferior


Barra de aplicativos inferior do design de material

À esquerda, há um exemplo de como a barra de aplicativos inferior funciona a partir do aplicativo de demonstração Flutter , à direita, uma demonstração da biblioteca da barra de aplicativos inferior do KivyMD .

exemplo de código
 from kivy.factory import Factory from kivymd.app import MDApp from kivy.lang import Builder Builder.load_string( """ <BottomAppBar@Screen> BoxLayout: spacing: dp(10) orientation: 'vertical' MDToolbar: title: "Title" md_bg_color: app.theme_cls.primary_color left_action_items: [['menu', lambda x: x]] Widget: MDBottomAppBar MDToolbar: title: "Title" icon: "git" type: "bottom" left_action_items: [["menu", lambda x: x]] """ ) class BottomAppBarTest(MDApp): def build(self): return Factory.BottomAppBar() BottomAppBarTest().run() 


Backdropr


Material Design Backdropr

À esquerda, está um exemplo de como o Backdropr funciona no aplicativo de demonstração Flutter , à direita, uma demonstração do Backdropr da biblioteca KivyMD .

Também adicionamos a seção Estudos à biblioteca, que hospedará aplicativos de demonstração, como Shrine , Basil e outros. Por enquanto, você pode ver como é o aplicativo Shrine :


E aqui está a mesma coisa, mas a partir do aplicativo Flutter :


Então, o KivyMD parece em dispositivos Android . Em alguns lugares, é claro, existem problemas de desempenho, mas isso preocupa, provavelmente, o próprio Kivy . Por exemplo, ainda existem problemas ao iniciar bibliotecas "pesadas". No vídeo a seguir, dei um exemplo de aplicativo usando o OpenCV como back-end para uma câmera Android :


Nesse caso em particular, nada pode ser feito, porque, no início, não apenas o OpenCV e o NumPy são carregados, mas também chamadas nativas ocorrem para conectar tudo isso. No entanto, um aplicativo móvel bem projetado no Kivy e KivyMD é iniciado rapidamente. Tudo isso se aplica às plataformas móveis. Não existem problemas na área de trabalho e o KivyMD parece simplesmente maravilhoso lá:

Mac OS:


Windows:


Em princípio, não importa em que sistema operacional tudo isso funcionará, porque o KivyMD , como o Kivy, tem a mesma aparência em todos os lugares. Você mesmo deve decidir que tipo de aplicativo seu aplicativo terá e acho que isso é apenas uma vantagem.

Temos muitos planos, mas não temos mãos suficientes. Por exemplo, embora não haja tempo para refinar o gerenciador de arquivos para sistemas de desktop, eu gostaria de apresentar suporte para widgets iOS e muito mais ... No entanto, apesar de todas as deficiências, o número de downloads e o interesse na biblioteca estão aumentando a cada dia:


Participe da comunidade se você ama Python tanto quanto a amamos!

Canal do Youtube
KivyMD News
Chat de discórdia

Source: https://habr.com/ru/post/pt479126/


All Articles