Ich versuche, ein sehr einfaches Beispiel in Kivy (kv) zu tun, wie folgt:Kivy - Kv - ScreenManager- - Ändern des aktuellen Bildschirm
#:import Toolbar kivymd.toolbar.Toolbar
BoxLayout:
orientation: 'vertical'
Toolbar:
id: toolbar
title: 'My Toolbar'
md_bg_color: app.theme_cls.primary_color
background_palette: 'Primary'
background_hue: '500'
left_action_items: [['arrow-left', app.root.ids.scr_mngr.current = 'screen1' ]]
right_action_items: [['arrow-right', app.root.ids.scr_mngr.current = 'screen2' ]]
ScreenManager:
id: scr_mngr
Screen:
name: 'screen1'
Toolbar:
title: "Screen 1"
Screen:
name: 'screen2'
Toolbar:
title: "Screen 2"
Dies wird fehlschlagen, da beide left_action_items und right_action_items eine Liste von Paaren erwarten : [Name_des_Icons, Ausdruck]. Auf der anderen Seite, wenn Sie mit den Tasten umgehen, würde die Erklärung zum Beispiel legal sein, wenn wir etwas tun:
on_release:
app.root.ids.scr_mngr.current = 'screen1'
Auf der anderen Seite, der richtige Ansatz für left_action_item wäre so etwas wie:
left_action_items: [['arrow-left', lambda x: app.root.ids.scr_mngr.current = 'screen1' ]]
Aber das ist nicht legal, weil Sie eine solche Zuweisung in Lambda unter Python nicht durchführen können.
Was wäre der richtige Ansatz für left_action_items, um den Bildschirm zu ändern?
Es funktioniert. Es ist schade, dass ScreenManager nicht die Möglichkeit bietet, etwas zu tun: set_screen ('screen1') – mantielero
@mantielero antwortet das nicht auf Ihre Frage? – EL3PHANTEN