Salutations!Il n'y a pas si longtemps, ils ont écrit sur Python dans le développement mobile et le développement d'applications mobiles en Python à l'aide des bibliothèques Kivy et KivyMD . Cet article continuera à vous familiariser avec les outils Python multiplateforme, et plus précisément aujourd'hui, nous examinerons les nouveaux éléments qui sont apparus récemment dans la bibliothèque KivyMD.KivyMD est un ajout au cadre Kivy (un outil multiplateforme axé sur le développement d'applications modernes avec prise en charge multitouch), qui fournit à l'utilisateur un ensemble de widgets "de Google". Entre guillemets, car sous le capot, KivyMD utilise Kivy, qui à son tour tire SDL2 et OpenGL ES 2.0 pour rendre l'interface utilisateur, c'est-à-dire que, comme dans Flutter , il existe son propre moteur pour le rendu des widgets, ce qui signifie tout ce que vous voyez à l'écran - ce n'est pas natif. Exceptions et litiges à ce sujet, nous laisserons résolument de côté et procéderons.MDDataTable
Donc, dans la dernière version de KivyMD (0.104.1), nous avons finalement implémenté le widget DataTable:La mise en œuvre de l'utilisation est assez 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()
Dans DataTable, toutes les fonctions des DataTables de Material Design ne sont pas encore implémentées , mais nous travaillons sur des améliorations.MDDialogs
L'utilisation des boîtes de dialogue a été simplifiée et améliorée - elles sont désormais conformes aux spécifications de conception des matériaux. 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
Dans MDCard ont été ajoutés pour effectuer focus_behavior et 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
Champ de texte ajouté avec mode de remplissage :MDTextField:
hint_text: "Fill mode"
mode: "fill"
fill_color: 0, 0, 0, .4
Dans toutes les classes de champs de texte, il est possible de définir l'icône à droite:MDMenu
Amélioration des performances de la classe MDMenu.TapTargetView
Widget TapTargetView ajouté:MDFloatingActionButtonSpeedDial
Implémentation du 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()
Rechargement à chaud
Le framework Flutter est très fier de son outil de rechargement à chaud (rechargement des propriétés des widgets à la volée) ... Dans Kivy, cela est implanté depuis longtemps. Nous venons d'améliorer cet utilitaire et de l'inclure dans le package KivyMD:Et, oui, la documentation officielle de KivyMD est déjà disponible. C'est tout pour l'instant, merci d'avoir regardé!