Python dans le développement mobile



Ce n'est un secret pour personne que la portée de Python est assez large: des technologies Web à l'industrie des jeux en passant par les projets de la NASA . Python fonctionne presque partout: des ordinateurs de poche et des smartphones aux serveurs réseau et sur presque toutes les plates-formes bien connues telles que Windows, Linux / UNIX, macOS, Palm OS, Raspberry PI et ainsi de suite. Grâce au framework Kivy, Python a également maîtrisé en 2011 les plates-formes mobiles en termes de développement d'applications pour iOS et Android , et en 2015, en utilisant la bibliothèque KivyMD, Python a appris à utiliser Material Design .

La bibliothèque KivyMD est une collection de widgets dans le style de Material Design , à utiliser dans le cadre multiplateforme Kivy . Dans mon article précédent KivyMD - la vie continue , qui a été publié il y a un an, j'ai déjà parlé de fork de cette bibliothèque, mais dans les problèmes et dans le courrier, j'ai souvent reçu des notifications que les fonctionnalités déclarées dans le fork ne sont pas disponibles lors de l'installation de KivyMD à partir de PyPi . Et c'était vraiment le cas, car PyPi contenait il y a quatre ans une ancienne version de la bibliothèque du référentiel GitLab , qui n'était plus prise en charge par l'auteur et, puisque nous ne voulions pas utiliser un nouveau nom pour notre fork, comme KivyMD-fork, et charger le package dans PyPi avec un tel nom, il a été décidé d'écrire à l'auteur de KivyMD Andrés Rodríguez (@mixedCase_) et lui demander de retirer son colis. Après de longues négociations, Andre nous a fait une invitation au Python Package , à condition qu'il reste co-auteur de la bibliothèque. Alors maintenant, le référentiel officiel de la bibliothèque est ici , et nos dernières mises à jour sont disponibles dans PyPi .

Alors, quels changements dans la bibliothèque ont eu lieu un an plus tard? Grâce aux personnes qui utilisent KivyMD dans leurs projets, nous avons éliminé pas mal d'erreurs. Il y a 81 questions fermées dans le référentiel. C'est le cas si vous ne tenez pas compte du fait que la part du lion des problèmes est résolue dans le support utilisateur de chat en ligne Discord . Il contient des sections en russe et en anglais. Toutes les spécifications Material Design ne sont pas actuellement implémentées, car près de deux personnes travaillent sur la bibliothèque pendant leur temps libre. Ce qui a déjà été mis en œuvre et ce que j'aimerais mettre en œuvre peut être consulté dans cette liste . Il est loin d'être complet, mais vous pouvez le compléter, car l'accès à l'édition est ouvert à tous. Voici quelques nouveaux widgets:

Info-bulle


Info-bulle sur la conception des matériaux

exemple de code
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() 



* Exemple Mac OS



Barre d'application inférieure


Barre d'application inférieure de Material Design

À gauche, un exemple du fonctionnement de la barre d'application inférieure à partir de l'application de démonstration Flutter , à droite, une démonstration de la bibliothèque de la barre d'application inférieure KivyMD .

exemple de code
 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


Conception matérielle Backdropr

À gauche, un exemple du fonctionnement de Backdropr à partir de l'application de démonstration Flutter , à droite, une démonstration du Backdropr de la bibliothèque KivyMD .

Nous avons également ajouté la section Études à la bibliothèque, qui hébergera des applications de démonstration telles que Shrine , Basil et autres. Pour l'instant, vous pouvez voir à quoi ressemble l'application Shrine :


Et voici la même chose, mais à partir de l'application Flutter :


KivyMD regarde donc les appareils Android . Dans certains endroits, bien sûr, il y a des problèmes de performances, mais cela concerne très probablement Kivy lui-même. Par exemple, le démarrage de bibliothèques «lourdes» pose toujours des problèmes. Dans la vidéo suivante, j'ai donné un exemple d'application utilisant OpenCV comme backend pour une caméra Android :


Dans ce cas particulier, rien ne peut être fait, car au début, non seulement OpenCV et NumPy sont chargés, mais des appels natifs se produisent également pour connecter tout cela. Cependant, une application mobile bien conçue sur Kivy et KivyMD démarre assez rapidement. Tout cela s'applique aux plateformes mobiles. Il n'y a pas de tels problèmes sur le bureau et KivyMD est tout simplement magnifique:

Mac OS:


Windows:


En principe, peu importe sur quel système d'exploitation tout cela fonctionnera, car KivyMD , comme Kivy, a la même apparence partout. Vous devez décider vous-même du type d'application de votre application et je pense que ce n'est qu'un avantage.

Nous avons beaucoup de plans, mais pas assez de mains. Par exemple, bien que nous n'ayons pas le temps d'affiner le gestionnaire de fichiers pour les systèmes de bureau, je voudrais introduire la prise en charge des widgets iOS et bien plus encore ... Cependant, malgré toutes les lacunes, le nombre de téléchargements et l'intérêt pour la bibliothèque augmentent chaque jour:


Rejoignez la communauté si vous aimez Python autant que nous l'aimons!

Chaîne Youtube
KivyMD News
Discussion Discord

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


All Articles