Python in der mobilen Entwicklung



Es ist kein Geheimnis, dass der Umfang von Python ziemlich groß ist : von Webtechnologien über die Spieleindustrie bis hin zu NASA- Projekten. Python funktioniert fast überall: von Handheld-Computern und Smartphones bis hin zu Netzwerkservern und auf fast allen bekannten Plattformen wie Windows, Linux / UNIX, MacOS, Palm OS, Raspberry PI und so weiter. Dank des Kivy- Frameworks beherrschte Python 2011 auch mobile Plattformen im Hinblick auf die Entwicklung von Anwendungen für iOS und Android . 2015 lernte Python mithilfe der KivyMD- Bibliothek den Umgang mit Material Design .

Die KivyMD- Bibliothek ist eine Sammlung von Widgets im Material Design- Stil zur Verwendung im plattformübergreifenden Kivy -Framework. In meinem vorherigen Artikel KivyMD - life go on , der vor einem Jahr veröffentlicht wurde, habe ich bereits über Fork dieser Bibliothek gesprochen, aber in Problemen und in der E-Mail erhielt ich häufig Benachrichtigungen, dass die in der Fork deklarierten Funktionen bei der Installation von KivyMD von PyPi nicht verfügbar sind. Und das war wirklich so, denn PyPi enthielt vor vier Jahren eine alte Version der Bibliothek aus dem GitLab- Repository, die vom Autor nicht mehr unterstützt wurde, und da wir keinen neuen Namen für unsere Fork, wie KivyMD-Fork, verwenden wollten und das Paket damit in PyPi laden wollten Name, es wurde beschlossen, an den Autor von KivyMD Andrés Rodríguez (@mixedCase_) zu schreiben und ihn zu bitten, sein Paket zu entfernen. Nach einigen langwierigen Verhandlungen lud uns Andre zum Python-Paket ein , vorausgesetzt, er bleibt Mitautor der Bibliothek. Jetzt ist das offizielle Bibliotheks-Repository hier und unsere neuesten Updates sind in PyPi verfügbar.

Also, welche Änderungen in der Bibliothek geschahen ein Jahr später? Dank der Leute, die KivyMD in ihren Projekten verwenden, haben wir eine Menge Fehler beseitigt. Das Repository enthält 81 geschlossene Fragen. Dies ist der Fall, wenn Sie nicht berücksichtigen, dass der Löwenanteil der Probleme in der Benutzerunterstützung von Discord Online Chat behoben ist. Es gibt sowohl russischsprachige als auch englischsprachige Abschnitte. Derzeit sind nicht alle Material Design- Spezifikationen implementiert, da fast zwei Personen in ihrer Freizeit an der Bibliothek arbeiten. Was bereits implementiert wurde und was ich implementieren möchte, können Sie in dieser Liste sehen . Es ist alles andere als vollständig, aber Sie können es ergänzen, da der Bearbeitungszugriff für alle zugänglich ist. Hier sind einige neue Widgets:

Tooltip


Tooltip für Materialdesign

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



* Mac OS Beispiel



Unten App-Leiste


Material Design App-Leiste unten

Links sehen Sie ein Beispiel für die Funktionsweise der unteren App-Leiste in der Flutter- Demo-Anwendung. Rechts sehen Sie eine Demonstration der unteren App- Leisten- Bibliothek von KivyMD .

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


Hintergrund


Material Design Hintergrund

Links sehen Sie ein Beispiel für die Funktionsweise von Backdropr in der Flutter- Demo-Anwendung. Rechts sehen Sie eine Demonstration des Backdropr der KivyMD- Bibliothek.

Wir haben der Bibliothek auch den Abschnitt " Studien" hinzugefügt, in dem Demoanwendungen wie " Schrein" , " Basilikum" und andere bereitgestellt werden. Im Moment können Sie sehen, wie die Shrine- Anwendung aussieht:


Und hier ist das Gleiche, aber aus der Flutter- Anwendung:


So sieht KivyMD auf Android- Geräten aus. An einigen Stellen gibt es natürlich Leistungsprobleme, aber dies betrifft höchstwahrscheinlich Kivy selbst. Zum Beispiel gibt es immer noch Probleme beim Starten von "schweren" Bibliotheken. Im folgenden Video habe ich eine Beispielanwendung mit OpenCV als Backend für eine Android- Kamera gegeben:


In diesem speziellen Fall kann nichts getan werden, da zu Beginn nicht nur OpenCV und NumPy geladen werden, sondern auch native Aufrufe, um all dies zu verbinden. Eine gut gestaltete mobile Anwendung auf Kivy und KivyMD startet jedoch ziemlich schnell. All dies gilt für mobile Plattformen. Es gibt keine derartigen Probleme auf dem Desktop und KivyMD sieht dort einfach großartig aus:

Mac OS:


Windows:


Grundsätzlich spielt es keine Rolle, auf welchem ​​Betriebssystem dies alles funktioniert, da KivyMD wie Kivy überall gleich aussieht. Sie müssen selbst entscheiden, welche Art von Bewerbung Ihre Bewerbung haben wird, und ich denke, das ist nur ein Plus.

Wir haben viel vor, aber nicht genug Hände. Obwohl es keine Zeit gibt, den Dateimanager für Desktop-Systeme zu verfeinern, möchte ich Unterstützung für iOS-Widgets und vieles mehr einführen ... Trotz aller Mängel nimmt die Anzahl der Downloads und das Interesse an der Bibliothek von Tag zu Tag zu:


Treten Sie der Community bei, wenn Sie Python genauso lieben, wie wir es lieben!

Youtube-Kanal
KivyMD Nachrichten
Zwietracht-Chat

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


All Articles