材质Python。KivyMD库中的新增功能


问候!

不久前,他们写了在移动开发中的Python使用的Kivy和KivyMD库在Python移动应用程序的开发本文将继续使您熟悉跨平台的Python工具,特别是今天,我们将考虑最近在KivyMD库中出现的新项目。

KivyMDKivy框架(专注于开发具有多点触摸支持的现代应用程序的跨平台工具)的补充,该框架为用户提供了“来自Google”的一组小部件。用引号引起来,因为在后台,KivyMD使用Kivy,这反过来又拉SDL2和OpenGL ES 2.0来呈现UI,也就是说,就像在Flutter中一样,它有自己的引擎来渲染小部件,这意味着您在屏幕上看到的所有内容-这不是本地的。对此有例外和争议,我们将坚决抛弃并继续进行。

MDDataTable


因此,在KivyMD最新版本(0.104.1)中,我们终于实现了DataTable小部件:


使用的实现非常简单:

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

在DataTable中,尚未实现Material Design规范 DataTables中的所有功能,但是我们正在努力进行改进。

MD对话框


对话框的使用已得到简化和改进-现在它们符合材料设计规范。

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


MD卡


在MDCard中添加了进行focus_behaviorripple_behavior的方法

focus_behavior

MDCard:
    focus_behavior: True



波纹行为


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


使用填充模式添加了文本字段


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

在所有类别的文本字段中,都可以在右侧设置图标:



菜单


改进了MDMenu类的性能。

TapTargetView


添加了TapTargetView小部件:


MDFloatingActionButtonSpeedDial


实现了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()


热装


Flutter框架以其热重装工具(快速重装小部件属性)而感到自豪。在Kivy中,这早已实现。我们刚刚改进了此实用程序,并将其包含在KivyMD软件包中:


并且,是的,官方的KivyMD文档已经可用。现在就这些,谢谢收看!

All Articles