
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 materialexemplo de códigofrom 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 OSBarra 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 YoutubeKivyMD NewsChat de discórdia