Должно быть Kivy 2.3.0 и KivyMD 2.0.1
Код: Выделить всё
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.behaviors import RotateBehavior
from kivy.uix.behaviors import ButtonBehavior
from kivymd.uix.list import MDListItemTrailingIcon
from kivymd.uix.expansionpanel import MDExpansionPanel
import asynckivy
from kivy.core.window import Window
Window.size = (350, 650)
class ExpansionPanelItem(MDExpansionPanel):
...
class TrailingPressedIconButton(
ButtonBehavior, RotateBehavior, MDListItemTrailingIcon
):
...
KV = """
#:kivy 2.3.0
adaptive_height: True
MDExpansionPanelHeader:
MDListItem:
theme_bg_color: "Custom"
md_bg_color: self.theme_cls.surfaceContainerLowColor
ripple_effect: False
MDListItemLeadingIcon:
icon: "checkbox-blank-circle"
MDListItemHeadlineText:
text: "Task description"
MDListItemSupportingText:
text: "Note"
MDListItemTertiaryText:
text: "datetime"
TrailingPressedIconButton:
id: chevron
icon: "chevron-right"
on_release: app.tap_expansion_chevron(root, chevron)
MDExpansionPanelContent:
size_hint: 1, None
id: expansion_content
orientation: "vertical"
padding: "12dp", "12dp"
md_bg_color: self.theme_cls.surfaceContainerLowestColor
MDScreen:
BoxLayout:
orientation: "vertical"
ScrollView:
MDGridLayout:
id: widget_layout
cols: 1
size_hint_y: None
height: self.minimum_height
"""
class TodoApp(MDApp):
def build(self):
return Builder.load_string(KV)
def on_start(self):
widget_layout = self.root.ids.widget_layout
async def add_widgets():
for _ in range(10):
await asynckivy.sleep(0)
widget_widget = ExpansionPanelItem()
widget_widget.ids.expansion_content.add_widget(ExpansionPanelItem())
widget_layout.add_widget(widget_widget)
asynckivy.start(add_widgets())
def tap_expansion_chevron(self, panel: MDExpansionPanel, chevron: TrailingPressedIconButton):
panel.open() if not panel.is_open else panel.close()
panel.set_chevron_down(
chevron
) if not panel.is_open else panel.set_chevron_up(chevron)
if __name__ == "__main__":
TodoApp().run()
Странно, как только внутренняя панель открывается и закрывается снова, макет на данный момент фиксируется ¯\_(ツ)_/¯
Я все еще новичок в kivy и kivymd, так что мой вопрос может быть немного нубским, но чувствую, что я теряю его, и большая часть материалов YouTube на kivymd на данный момент устарела.
Любая помощь в исправлении этой проблемы приветствуется (✿◡‿◡)
Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-kivymd
Мобильная версия