Как добавить панель расширения в панель расширения в kivymd?Python

Программы на Python
Ответить
Anonymous
 Как добавить панель расширения в панель расширения в kivymd?

Сообщение Anonymous »

В течение некоторого времени я пытался создать «Вложенные панели расширения» в kivymd, то есть панель расширения внутри панели расширения, и из любви к этому я не мог заставить макет работать.
Должно быть 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»