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

* Exemple Mac OSBarre 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