Schöne Grüße!Vor nicht allzu langer Zeit haben sie über Python in der mobilen Entwicklung und die Entwicklung mobiler Anwendungen in Python unter Verwendung der Bibliotheken Kivy und KivyMD geschrieben . In diesem Artikel werden Sie weiterhin mit plattformübergreifenden Python-Tools vertraut gemacht. Insbesondere werden wir uns heute mit den neuen Elementen befassen, die kürzlich in der KivyMD-Bibliothek veröffentlicht wurden.KivyMD ist eine Ergänzung des Kivy- Frameworks (ein plattformübergreifendes Tool zur Entwicklung moderner Anwendungen mit Multitouch-Unterstützung), das dem Benutzer eine Reihe von Widgets "von Google" zur Verfügung stellt. In Anführungszeichen, weil KivyMD unter der Haube Kivy verwendet, das wiederum SDL2 und OpenGL ES 2.0 zum Rendern der Benutzeroberfläche abruft, dh wie in Flutter gibt es eine eigene Engine zum Rendern von Widgets, dh alles, was Sie auf dem Bildschirm sehen - Das ist nicht einheimisch. Ausnahmen und Streitigkeiten hierzu werden wir entschlossen beiseite lassen und fortfahren.MDDataTable
In der neuesten Version von KivyMD (0.104.1) haben wir endlich das DataTable-Widget implementiert:Die Implementierung der Verwendung ist recht einfach: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()
In DataTable sind noch nicht alle Funktionen aus DataTables der Materialdesign-Spezifikation implementiert , aber wir arbeiten an Verbesserungen.MDDialogs
Die Verwendung von Dialogfeldern wurde vereinfacht und verbessert - jetzt entsprechen sie der Materialdesignspezifikation. 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
In MDCard wurden hinzugefügt, um focus_behavior und ripple_behavior durchzuführen :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
Textfeld mit Füllmodus hinzugefügt :MDTextField:
hint_text: "Fill mode"
mode: "fill"
fill_color: 0, 0, 0, .4
In allen Klassen von Textfeldern kann das Symbol rechts festgelegt werden:MDMenu
Verbesserte Leistung der MDMenu-Klasse.TapTargetView
TapTargetView-Widget hinzugefügt:MDFloatingActionButtonSpeedDial
Implementiert das MDFloatingActionButtonSpeedDial-Widget: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
Das Flutter-Framework ist sehr stolz auf sein Hot-Reload-Tool (das Widget-Eigenschaften im laufenden Betrieb neu lädt) ... In Kivy ist dies seit langem implementiert. Wir haben dieses Dienstprogramm gerade verbessert und in das KivyMD-Paket aufgenommen:Und ja, die offizielle KivyMD-Dokumentation ist bereits verfügbar. Das ist alles für jetzt, danke fürs Zuschauen!