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

* Ejemplo de Mac OSBarra de aplicaciones inferior
Barra de aplicación inferior de diseño de materialA 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 materialesA 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 youtubeKivyMD NewsChat de discordia