Matériel Python. Nouveautés de la bibliothèque KivyMD


Salutations!

Il n'y a pas si longtemps, ils ont écrit sur Python dans le développement mobile et le développement d'applications mobiles en Python à l'aide des bibliothèques Kivy et KivyMD . Cet article continuera à vous familiariser avec les outils Python multiplateforme, et plus précisément aujourd'hui, nous examinerons les nouveaux éléments qui sont apparus récemment dans la bibliothèque KivyMD.

KivyMD est un ajout au cadre Kivy (un outil multiplateforme axé sur le développement d'applications modernes avec prise en charge multitouch), qui fournit à l'utilisateur un ensemble de widgets "de Google". Entre guillemets, car sous le capot, KivyMD utilise Kivy, qui à son tour tire SDL2 et OpenGL ES 2.0 pour rendre l'interface utilisateur, c'est-à-dire que, comme dans Flutter , il existe son propre moteur pour le rendu des widgets, ce qui signifie tout ce que vous voyez à l'écran - ce n'est pas natif. Exceptions et litiges à ce sujet, nous laisserons résolument de côté et procéderons.

MDDataTable


Donc, dans la dernière version de KivyMD (0.104.1), nous avons finalement implémenté le widget DataTable:


La mise en œuvre de l'utilisation est assez simple:

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

Dans DataTable, toutes les fonctions des DataTables de Material Design ne sont pas encore implémentées , mais nous travaillons sur des améliorations.

MDDialogs


L'utilisation des boîtes de dialogue a été simplifiée et améliorée - elles sont désormais conformes aux spécifications de conception des matériaux.

        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


Dans MDCard ont été ajoutés pour effectuer focus_behavior et ripple_behavior :

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


Champ de texte ajouté avec mode de remplissage :


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

Dans toutes les classes de champs de texte, il est possible de définir l'icône à droite:



MDMenu


Amélioration des performances de la classe MDMenu.

TapTargetView


Widget TapTargetView ajouté:


MDFloatingActionButtonSpeedDial


Implémentation du widget MDFloatingActionButtonSpeedDial:

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


Rechargement à chaud


Le framework Flutter est très fier de son outil de rechargement à chaud (rechargement des propriétés des widgets à la volée) ... Dans Kivy, cela est implanté depuis longtemps. Nous venons d'améliorer cet utilitaire et de l'inclure dans le package KivyMD:


Et, oui, la documentation officielle de KivyMD est déjà disponible. C'est tout pour l'instant, merci d'avoir regardé!

All Articles