Выберите меню Dynami c с Kivymd - PullRequest
0 голосов
/ 04 марта 2020

Я разрабатываю динамический экран 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').

введите описание изображения здесь

...