Я разрабатываю динамический экран c, в котором выбор элемента определяет набор параметров элемента для следующего выбора.
from kivy.properties import ListProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivymd.app import MDApp
from kivymd.uix.dropdownitem import MDDropDownItem
from kivymd.uix.list import IRightBodyTouch, ThreeLineRightIconListItem
Builder.load_string(
"""
<Item>:
id: selection1
height: dp(56)
text: "Selection Independent"
secondary_text: "a dropdown"
font_style: "H6"
ListButtonDropdown:
items: root.items #contains the independent items
<Item>:
height: dp(56)
text: "Selection dependent"
secondary_text: "a dropdown"
font_style: "H6"
ListButtonDropdown:
items1: root.items1 #contains items dependent on the previous selection
<Base>:
orientation: "vertical"
spacing: "10dp"
MDToolbar:
title: app.title
md_bg_color: app.theme_cls.primary_color
elevation: 10
left_action_items: [["menu", lambda x: x]]
ScrollView:
GridLayout:
id: box
size_hint_y: None
height: self.minimum_height
cols: 1
"""
)
class Base(BoxLayout):
pass
class Item(ThreeLineRightIconListItem):
items = ListProperty()
class ListButtonDropdown(IRightBodyTouch, MDDropDownItem):
pass
class MainApp(MDApp):
def __init__(self, **kwargs):
self.title = "KivyMD Examples - DropDownItem with ScrollView"
super().__init__(**kwargs)
def build(self):
self.root = Base()
def on_start(self):
self.root.ids.box.add_widget(Item(items=['1','2']))
#verification of the selection made previously (* IT SHOULD BE *)
if self.root.ids.box.items == '1':
self.root.ids.box.add_widget(Item(items1=['option1', 'option2', 'option3']))
elif self.root.ids.box.items == '2':
self.root.ids.box.add_widget(Item(items1=['option4', 'option5', 'option6']))
if __name__ == "__main__":
MainApp().run()
Если кто-нибудь знает, как включить этот экран сейчас , В случае следующего изображения должны появиться опции, соответствующие выбранному элементу 2 ('option4', 'option5', 'option6').
введите описание изображения здесь