Python material. O que há de novo na biblioteca KivyMD


Saudações!

Há pouco tempo, eles escreveram sobre o Python no desenvolvimento Mobile e o desenvolvimento de aplicativos móveis no Python usando as bibliotecas Kivy e KivyMD . Este artigo continuará a familiarizá-lo com as ferramentas Python de plataforma cruzada e, especificamente, hoje consideraremos os novos itens que apareceram na biblioteca KivyMD recentemente.

O KivyMD é uma adição à estrutura do Kivy (uma ferramenta multiplataforma focada no desenvolvimento de aplicativos modernos com suporte a multitoque), que fornece ao usuário um conjunto de widgets "do Google". Entre aspas, porque por baixo do capô, o KivyMD usa o Kivy, que por sua vez puxa o SDL2 e o OpenGL ES 2.0 para renderizar a interface do usuário, ou seja, como no Flutter , existe um mecanismo próprio para renderizar widgets, o que significa tudo o que você vê na tela - isso não é nativo. Exceções e disputas sobre isso, deixaremos de lado resolutamente e prosseguiremos.

MDDataTable


Portanto, na versão mais recente do KivyMD (0.104.1), finalmente implementamos o widget DataTable:


A implementação do uso é bastante simples:

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

No DataTable, nem todas as funções do DataTables de especificação de design de material ainda estão implementadas , mas estamos trabalhando em melhorias.

MDDialogs


O uso de caixas de diálogo foi simplificado e aprimorado - agora elas estão em conformidade com a especificação de design do material.

        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


No MDCard foram adicionados para realizar focus_behavior e 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


Adicionado campo de texto com o modo de preenchimento :


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

Em todas as classes de campos de texto, é possível definir o ícone à direita:



MDMenu


Melhor desempenho da classe MDMenu.

TapTargetView


Adicionado o widget TapTargetView:


MDFloatingActionButtonSpeedDial


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


Recarga a quente


A estrutura Flutter está muito orgulhosa de sua ferramenta de recarga Hot (recarregando as propriedades do widget em tempo real) ... No Kivy, isso foi implementado há muito tempo. Acabamos de melhorar este utilitário e o incluímos no pacote KivyMD:


E sim, a documentação oficial do KivyMDestá disponível. Por enquanto é isso, obrigado por assistir!

All Articles