Как получить ссылку на MDScreen , который создается во время нажатия кнопки
хочу сделать словарь. Данные словаря хранятся в json файле. Чтобы не создавать кучу экранов, хочу сделать так ,чтобы экран создавался при нажатии на элемент списка с именем текста этого элемента, а по этому имени я мог обратиться к json файлу. Проблема в том, что при инициализации списка учебных модулей я не могу получить названия экрана на котором этот список должен находиться, потому что он еще не создан.
class FolderList(MDList):
def __init__(self, folders=[], **kwargs):
super().__init__(**kwargs)
self.folders = get_list_value('folders.json')
for folder in list(self.folders):
item = ItemDrawer(icon='folder', text=folder, screen_name = folder)
item.bind(on_release= self.to_eximine)
self.add_widget(item)
def to_eximine(self, instance):
sm = self.parent.parent.parent.parent
try:
eximine_screen = sm.get_screen(instance.screen_name)
except:
eximine_screen = Eximine(name=instance.screen_name)
sm.add_widget(eximine_screen)
sm.current = instance.screen_name
В этом классе при нажатии на элемент списка создается экран с именем элемента
class Eximine(MDScreen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
class EximineList(MDList):
def __init__(self, modules=[], **kwargs):
super().__init__(**kwargs)
#self.name = self.parent.parent.parent.parent
self.modules = get_list_value('folders.json')
for module in self.modules:
item = ItemDrawer(icon="school", text=module, screen_name=module)
item.bind(on_release= self.v_parent )
self.add_widget(item)
def v_parent(self,instance):
print(self.parent.parent.parent.parent)
Файл .kv : id: eximine_list ScreenManager:
MDScreen:
MDBoxLayout:
size_hint_x: 0.5
pos_hint: {'center_x':0.5,}
ScrollView:
EximineList:
id: eximine
spacing: root.height / 10
Как инициализировать class EximineList во время его создания?