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,
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()
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 KivyMD já está disponível. Por enquanto é isso, obrigado por assistir!