¡Saludos!No hace mucho tiempo, escribieron sobre Python en el desarrollo móvil y el desarrollo de aplicaciones móviles en Python utilizando las bibliotecas Kivy y KivyMD . Este artículo continuará familiarizándolo con las herramientas de Python multiplataforma, y específicamente hoy veremos los nuevos elementos que han aparecido recientemente en la biblioteca KivyMD.KivyMD es una adición al marco Kivy (una herramienta multiplataforma centrada en el desarrollo de aplicaciones modernas con soporte multitáctil), que proporciona al usuario un conjunto de widgets "de Google". Entre comillas, porque debajo del capó, KivyMD usa Kivy, que a su vez extrae SDL2 y OpenGL ES 2.0 para renderizar la interfaz de usuario, es decir, como en Flutter , hay su propio motor para renderizar widgets, lo que significa todo lo que ves en la pantalla - Esto no es nativo. Excepciones y disputas con respecto a esto, decididamente lo dejaremos de lado y procederemos.MDDataTable
Entonces, en la última versión de KivyMD (0.104.1) finalmente implementamos el widget DataTable:La implementación del uso es bastante 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,
check=True,
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)),
],
row_data=[
("Frozen yogurt", "159", "6.0", "24", "4.0", "87", "14%", "1%"),
],
)
data_tables.open()
Example().run()
En DataTable, todavía no se implementan todas las funciones de DataTables de especificaciones de diseño de materiales , pero estamos trabajando en mejoras.MDDialogs
El uso de cuadros de diálogo se ha simplificado y mejorado: ahora cumplen con las especificaciones de diseño de materiales. 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
En MDCard se agregaron para realizar focus_behavior y ripple_behavior :focus_behavior :MDCard:
focus_behavior: True
comportamiento_ ondulación :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
Campo de texto agregado con modo de relleno :MDTextField:
hint_text: "Fill mode"
mode: "fill"
fill_color: 0, 0, 0, .4
En todas las clases de campos de texto existe la posibilidad de establecer el icono a la derecha:MDMenu
Rendimiento mejorado de la clase MDMenu.TapTargetView
Se agregó el widget TapTargetView:MDFloatingActionButtonSpeedDial
Implementado el 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 en caliente
El marco Flutter está muy orgulloso de su herramienta de recarga en caliente (recarga de propiedades de widgets sobre la marcha) ... En Kivy, esto se ha implementado durante mucho tiempo. Acabamos de mejorar esta utilidad y la incluimos en el paquete KivyMD:Y sí, la documentación oficial de KivyMD ya está disponible. Eso es todo por ahora, ¡gracias por mirar!