Material Python. Was ist neu in der KivyMD-Bibliothek?


Schöne Grüße!

Vor nicht allzu langer Zeit haben sie über Python in der mobilen Entwicklung und die Entwicklung mobiler Anwendungen in Python unter Verwendung der Bibliotheken Kivy und KivyMD geschrieben . In diesem Artikel werden Sie weiterhin mit plattformübergreifenden Python-Tools vertraut gemacht. Insbesondere werden wir uns heute mit den neuen Elementen befassen, die kürzlich in der KivyMD-Bibliothek veröffentlicht wurden.

KivyMD ist eine Ergänzung des Kivy- Frameworks (ein plattformübergreifendes Tool zur Entwicklung moderner Anwendungen mit Multitouch-Unterstützung), das dem Benutzer eine Reihe von Widgets "von Google" zur Verfügung stellt. In Anführungszeichen, weil KivyMD unter der Haube Kivy verwendet, das wiederum SDL2 und OpenGL ES 2.0 zum Rendern der Benutzeroberfläche abruft, dh wie in Flutter gibt es eine eigene Engine zum Rendern von Widgets, dh alles, was Sie auf dem Bildschirm sehen - Das ist nicht einheimisch. Ausnahmen und Streitigkeiten hierzu werden wir entschlossen beiseite lassen und fortfahren.

MDDataTable


In der neuesten Version von KivyMD (0.104.1) haben wir endlich das DataTable-Widget implementiert:


Die Implementierung der Verwendung ist recht einfach:

from kivy.metrics import dp

from kivymd.app import MDApp
from kivymd.uix.datatables import MDDataTable

class Example(MDApp):
    def build(self):
        data_tables = MDDataTable(
            size_hint=(0.9, 0.6),
            use_pagination=True,  # use page pagination for table
            check=True,  # use checkboxes for rows
            # Data for header columns (name column, width column).
            column_data=[
                ("Desert (100g serving)", dp(70)),
                ("Calories", dp(30)),
                ("Fat (g)", dp(30)),
                ("Carbs (g)", dp(30)),
                ("Protein (g)", dp(30)),
                ("Sodium (mg)", dp(30)),
                ("Calcium (%)", dp(30)),
                ("Iron (%)", dp(30)),
            ],
            # Data for rows.
            row_data=[
                ("Frozen yogurt", "159", "6.0", "24", "4.0", "87", "14%", "1%"),
                # ...,
                # ...,
            ],
        )
        data_tables.open()


Example().run()

In DataTable sind noch nicht alle Funktionen aus DataTables der Materialdesign-Spezifikation implementiert , aber wir arbeiten an Verbesserungen.

MDDialogs


Die Verwendung von Dialogfeldern wurde vereinfacht und verbessert - jetzt entsprechen sie der Materialdesignspezifikation.

        dialog = MDDialog(
            title="Reset settings?",
            text="This will reset your device to its default factory settings.",
            buttons=[
                MDFlatButton(
                    text="CANCEL", text_color=self.theme_cls.primary_color
                ),
                MDFlatButton(
                    text="ACCEPT", text_color=self.theme_cls.primary_color
                ),
            ],
        )
        dialog.open()


MDCard


In MDCard wurden hinzugefügt, um focus_behavior und ripple_behavior durchzuführen :

focus_behavior :

MDCard:
    focus_behavior: True



ripple_behavior :


MDCard:
    ripple_behavior: True

MDCardSwipe :


<SwipeToDeleteItem>:
    size_hint_y: None
    height: content.height

    MDCardSwipeLayerBox:

    MDCardSwipeFrontBox:

        OneLineListItem:
            id: content
            text: root.text
            _no_ripple_effect: True

class SwipeToDeleteItem(MDCardSwipe):
    text = StringProperty()


MDTextField


Textfeld mit Füllmodus hinzugefügt :


MDTextField:
    hint_text: "Fill mode"
    mode: "fill"
    fill_color: 0, 0, 0, .4

In allen Klassen von Textfeldern kann das Symbol rechts festgelegt werden:



MDMenu


Verbesserte Leistung der MDMenu-Klasse.

TapTargetView


TapTargetView-Widget hinzugefügt:


MDFloatingActionButtonSpeedDial


Implementiert das MDFloatingActionButtonSpeedDial-Widget:

from kivy.uix.screenmanager import Screen

from kivymd.app import MDApp
from kivymd.uix.button import MDFloatingActionButtonSpeedDial

class Example(MDApp):
    data = {
        'language-python': 'Python',
        'language-php': 'PHP',
        'language-cpp': 'C++',
    }

    def build(self):
        screen = Screen()
        speed_dial = MDFloatingActionButtonSpeedDial()
        speed_dial.data = self.data
        speed_dial.rotation_root_button = True
        screen.add_widget(speed_dial)
        return screen

Example().run()


Hot Reload


Das Flutter-Framework ist sehr stolz auf sein Hot-Reload-Tool (das Widget-Eigenschaften im laufenden Betrieb neu lädt) ... In Kivy ist dies seit langem implementiert. Wir haben dieses Dienstprogramm gerade verbessert und in das KivyMD-Paket aufgenommen:


Und ja, die offizielle KivyMD-Dokumentation ist bereits verfügbar. Das ist alles für jetzt, danke fürs Zuschauen!

All Articles