Как переключаться между окнами при помощи кнопок на Toolbar?
При помощи обычной кнопки я могу переключиться между двумя окнами, задав им команду app.root.current = 'имя окна' и небольшую анимацию, в какую сторону будет перемещаться окно (root.manager.transition.direction). Я реализовал смену окон для кнопочки Toolbar, однако задать ей через обычный метод анимацию я не могу. Подскажите, как это сделать
from kivymd.app import MDApp
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
class WindowChoose(Screen): # начальное окно
pass
class WindowInfoConvert(Screen): # конвертация величин информации
pass
class WindowWeightConvert(Screen): # конвертация массы
pass
class WindowTemperatureConvert(Screen): # конвертация градусов
pass
class WindowManager(ScreenManager): # поддержка всех окон
pass
class ConvertApp(MDApp):
def build(self):
return Builder.load_string(window_convert)
def back(self):
self.root.current = 'choose'
window_convert = '''
WindowManager:
WindowChoose:
WindowInfoConvert:
<MyButton@MDFlatButton>:
font_size: 20
size_hint_y: None
size_hint_x: root.width
<WindowChoose>:
name: 'choose'
MDBoxLayout:
orientation: 'vertical'
MDToolbar:
title: 'Конвертер'
left_action_items: [['menu']]
ScrollView:
MDGridLayout:
cols: 1
height: self.minimum_height
size_hint_y: None
MyButton:
text: 'Информация'
on_release:
app.root.current = 'info_convert'
root.manager.transition.direction = 'left'
MyButton:
text: 'Масса'
MyButton:
text: 'Расстояние'
MyButton:
text: 'Площадь'
MyButton:
text: 'Объем'
MyButton:
text: 'Время'
MyButton:
text: 'Давление'
MyButton:
text: 'Количество теплоты'
<WindowInfoConvert>:
name: 'info_convert'
MDBoxLayout:
orientation: 'vertical'
MDToolbar:
title: 'Количество информации'
left_action_items: [['arrow-left', lambda x: app.back()]]
MDLabel:
text: 'Здесь что-то будет'
font_size: 32
halign: 'center'
'''
if __name__ == '__main__':
ConvertApp().run()
Ответы (1 шт):
Автор решения: Алексей Лень
→ Ссылка
Конкретно здесь нужно self.root.manager.transition.direction = 'right' в функции изменить на self.root.transition.direction = 'right'