Python en desarrollo móvil



No es ningún secreto que el alcance de Python es bastante amplio: desde las tecnologías web, la industria del juego y hasta los proyectos de la NASA . Python funciona en casi todas partes: desde computadoras de mano y teléfonos inteligentes hasta servidores de red y en casi todas las plataformas conocidas como Windows, Linux / UNIX, macOS, Palm OS, Raspberry PI, etc. Gracias al marco Kivy, en 2011 Python también dominó las plataformas móviles en términos de desarrollo de aplicaciones para iOS y Android , y en 2015, usando la biblioteca KivyMD, Python aprendió a usar Material Design .

La biblioteca KivyMD es una colección de widgets en el estilo de Material Design , para usar en el marco multiplataforma de Kivy . En mi artículo anterior KivyMD: la vida continúa , que se lanzó hace un año, ya hablé sobre la bifurcación de esta biblioteca, pero en problemas y en el correo a menudo recibí notificaciones de que las características declaradas en la bifurcación no están disponibles al instalar KivyMD desde PyPi . Y esto fue realmente así, porque PyPi contenía una versión antigua de la biblioteca hace cuatro años del repositorio de GitLab , que ya no era compatible con el autor y, dado que no queríamos usar un nuevo nombre para nuestro fork, como KivyMD-fork, y cargar el paquete en PyPi con tal nombre, se decidió escribir al autor de KivyMD Andrés Rodríguez (@mixedCase_) y pedirle que elimine su paquete. Después de algunas largas negociaciones, Andre nos invitó al paquete Python , siempre que siguiera siendo coautor de la biblioteca. Así que ahora el repositorio oficial de la biblioteca está aquí , y nuestras últimas actualizaciones están disponibles en PyPi .

Entonces, ¿qué cambios en la biblioteca ocurrieron un año después? Gracias a aquellas personas que usan KivyMD en sus proyectos, hemos eliminado bastantes errores. Hay 81 preguntas cerradas en el repositorio. Esto es si no tiene en cuenta el hecho de que la mayor parte de los problemas se resuelve en el soporte de usuario de chat en línea de Discord . Hay secciones en ruso y en inglés. No todas las especificaciones de diseño de materiales se implementan actualmente, porque casi dos personas trabajan en la biblioteca en su tiempo libre. Lo que ya se ha implementado y lo que me gustaría implementar se puede ver en esta lista . Está lejos de estar completo, pero puede complementarlo, ya que el acceso de edición está abierto para todos. Aquí hay algunos widgets nuevos:

Información sobre herramientas


Información sobre herramientas de diseño de materiales

ejemplo 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() 



* Ejemplo de Mac OS



Barra de aplicaciones inferior


Barra de aplicación inferior de diseño de material

A la izquierda hay un ejemplo de la barra de aplicaciones inferior que funciona desde la aplicación de demostración Flutter , a la derecha hay una demostración de la biblioteca de la barra de aplicaciones inferior KivyMD .

ejemplo 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


Fondo de diseño de materiales

A la izquierda hay un ejemplo de cómo funciona Backdropr desde la aplicación de demostración Flutter , a la derecha hay una demostración del Backdropr de la biblioteca KivyMD .

También agregamos la sección de Estudios a la biblioteca, que albergará aplicaciones de demostración como Shrine , Basil y otras. Por ahora, puede ver cómo se ve la aplicación Shrine :


Y aquí está lo mismo, pero desde la aplicación Flutter :


Entonces KivyMD se ve en dispositivos Android . En algunos lugares, por supuesto, hay problemas de rendimiento, pero esto se refiere, muy probablemente, al propio Kivy . Por ejemplo, todavía hay problemas al iniciar bibliotecas "pesadas". En el siguiente video, di una aplicación de ejemplo usando OpenCV como back-end para una cámara Android :


En este caso particular, no se puede hacer nada, porque al principio, no solo se cargan OpenCV y NumPy , sino que también se producen llamadas nativas para conectar todo esto. Sin embargo, una aplicación móvil bien diseñada en Kivy y KivyMD comienza con bastante rapidez. Todo esto se aplica a las plataformas móviles. No existen tales problemas en el escritorio y KivyMD se ve simplemente hermoso allí:

Mac OS:


Ventanas:


En principio, no importa en qué sistema operativo funcionará todo esto, porque KivyMD , como Kivy, se ve igual en todas partes. Usted mismo debe decidir qué tipo de aplicación tendrá su aplicación y creo que esto es solo una ventaja.

Tenemos muchos planes, pero no suficientes manos. Por ejemplo, aunque no hay tiempo para refinar el administrador de archivos para sistemas de escritorio, me gustaría presentar soporte para widgets de iOS y mucho más ... Sin embargo, a pesar de todas las deficiencias, el número de descargas y el interés en la biblioteca crece cada día:


¡Únete a la comunidad si amas a Python tanto como a nosotros!

Canal de youtube
KivyMD News
Chat de discordia

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


All Articles