Как переместиться на другой экран, дав эту команду элементу из выпадающего списка?
Я не понимаю, как это сделать, сама программа говорит, что атрибута root у класса WindowChoose нет
class WindowChoose(Screen): # начальное окно
def __init__(self, **kwargs):
super().__init__(**kwargs)
Clock.schedule_once(self._later_call)
def _later_call(self, dt):
menu_items = [
{
'text': 'Избранное',
'viewclass': 'OneLineListItem',
'on_release': lambda x = 'Избранное': self.to_favorite_window(x),
}
]
self.menu_main = MDDropdownMenu(
items = menu_items,
width_mult = 4,
)
# открытие выпадающего меню на начальном экране (menu)
def callback(self, btn):
self.menu_main.caller = btn
self.menu_main.open()
# перемещение на экран с избранным
def to_favorite_window(self, x):
self.root.current = 'favorite_window'
self.root.transition.direction = 'right'
Вот еще кусочек кода из самого класса-приложения, где то же самое работает
class ConvertApp(MDApp):
def build(self):
return Builder.load_string(window_convert_1)
def back(self): # перемещение на начальный экран
self.root.current = 'choose' # перемещение на начальный экран
self.root.transition.direction = 'right' # перемещение в начальный экран, сдвигая окно вправо
Ответы (1 шт):
Автор решения: Алексей Лень
→ Ссылка
def to_favorite_window(self, x):
self.manager.current = 'favorite_window'
self.manager.transition.direction = 'left'
self.menu_main.dismiss()
Нужно обратиться к менеджеру экранов и оттуда уже взять все нужное: экраны, анимации переходов и т.д.
def back(self):
self.root.current = 'choose' # перемещение на другой экран
self.root.transition.direction = 'right' # перемещение в начальный экран, сдвигая окно вправо
А здесь, обращаясь к root, ты обращаешься к менеджеру экранов