У меня на главном экране есть панель инструментов MDToolbar с двумя кнопками, и если экран меняется, мне нужно изменить кнопку на панели инструментов, когда текущий экран не является основным. Кнопка профиля на панели инструментов должна измениться на шеврон с определенным действием. Как это сделать с KivyMD?
main.kv
MainScreen:
screenManager: screenManager
toolbar: toolbar
BoxLayout:
orientation: 'vertical'
MDToolbar:
id: toolbar
pos_hint: {"top": 1}
size_hint: 1, .1
title: 'Main'
elevation: 10
md_bg_color: get_color_from_hex(hex_colormap["blue"])
left_action_items: [] if root.isCurrentScreen('menuScreen') else [['chevron-left', lambda x: root.changeScreen('menuScreen', direction='right')]]
right_action_items: [['settings', lambda x: root.changeScreen('settingsScreen')]] if root.isCurrentScreen('profileScreen') else [['account-circle-outline', lambda x: root.changeScreen('profileScreen')]]
ScreenManager:
id: screenManager
MenuScreen:
id: menuScreen
ProfileScreen:
id: profileScreen
SettingsScreen:
id: settingsScreen
И часть кода из main.py
class MainScreen(BoxLayout):
screenManager = ObjectProperty(None)
def changeScreen(self, screen, direction='left', *args):
self.screenManager.current = screen
self.screenManager.transition.direction = direction
def isCurrentScreen(self, screen):
print(self.screenManager.current == screen)
return self.screenManager.current == screen
class MenuScreen(Screen):
pass
class ProfileScreen(Screen):
pass
class SettingsScreen(Screen):
pass
class MyApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
def build(self):
return Builder.load_file('main.kv')
if __name__ == '__main__':
MyApp().run()