
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ériauxexemple de codefrom 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() 
 
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 YoutubeKivyMD NewsDiscussion Discord