Bahan Python. Apa yang Baru di Perpustakaan KivyMD


Salam pembuka!

Belum lama ini kami menulis tentang Python dalam pengembangan Mobile dan pengembangan aplikasi mobile di Python menggunakan pustaka Kivy dan KivyMD . Artikel ini akan terus memperkenalkan Anda dengan alat Python lintas-platform, dan khusus hari ini kita akan melihat item baru yang telah muncul di perpustakaan KivyMD baru-baru ini.

KivyMD adalah tambahan untuk kerangka kerja Kivy (alat lintas platform yang berfokus pada pengembangan aplikasi modern dengan dukungan multitouch), yang menyediakan kepada pengguna seperangkat widget "dari Google". Dalam tanda kutip, karena di bawah kap, KivyMD menggunakan Kivy, yang pada gilirannya menarik SDL2 dan OpenGL ES 2.0 untuk membuat UI, yaitu, seperti di Flutter , ada mesin sendiri untuk merender widget, yang berarti semua yang Anda lihat di layar - ini bukan asli Pengecualian dan perselisihan mengenai hal ini, kami akan dengan tegas mengesampingkan dan melanjutkan.

MDDataTable


Jadi, dalam versi terbaru KivyMD (0.104.1) kami akhirnya menerapkan widget DataTable:


Implementasi penggunaannya cukup sederhana:

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

Di DataTable, belum semua fungsi dari spesifikasi Desain Material DataTable diimplementasikan , tetapi kami sedang berupaya melakukan peningkatan.

MDDialogs


Penggunaan kotak dialog telah disederhanakan dan ditingkatkan - sekarang mereka memenuhi spesifikasi desain 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


Di MDCard ditambahkan untuk melakukan focus_behavior dan 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


Bidang teks ditambahkan dengan mode isi :


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

Di semua kelas bidang teks ada kemampuan untuk mengatur ikon di sebelah kanan:



MDMenu


Peningkatan kinerja kelas MDMenu.

TapTargetView


Menambahkan widget TapTargetView:


MDFloatingActionButtonSpeedDial


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


Hot reload


Kerangka Flutter sangat bangga dengan alat muat ulangnya yang panas (memuat ulang properti widget dengan cepat) ... Di Kivy, ini telah lama diterapkan. Kami baru saja meningkatkan utilitas ini dan memasukkannya ke dalam paket KivyMD:


Dan, ya, dokumentasi resmi KivyMD sudah tersedia. Itu saja untuk sekarang, terima kasih sudah menonton!

All Articles