Eine einfache Möglichkeit, dies zu erreichen, ist Ihre eigene Schaltfläche Unterklasse zu definieren:
class ScreenButton(Button):
screenmanager = ObjectProperty()
def on_press(self, *args):
super(ScreenButton, self).on_press(*args)
self.screenmanager.current = 'whatever'
Die on_press Methode wird automatisch aufgerufen, wenn die Taste gedrückt wird, so dass die current
Eigenschaft Screen wird geändert.
Dann können Sie Code so etwas wie haben:
sm = ScreenManager()
sc1 = Screen(name='firstscreen')
sc1.add_widget(ScreenButton(screenmanager=sm))
sc2 = Screen(name='whatever')
sc2.add_widget(Label(text='another screen'))
sm.add_widget(sc1)
sm.add_widget(sc2)
Durch Anklicken der Schaltfläche sollte die Bildschirme wechseln je nach Bedarf.
Ein anderer Weg (was wahrscheinlich ist, wie kv Sprache es tatsächlich tut) wäre manuell die bind
Methode zu verwenden.
def switching_function(*args):
some_screen_manager.current = 'whatever'
some_button.bind(on_press=switching_function)
Dies würde bedeuten, dass switching_function
aufgerufen wird, wenn some_button
gedrückt wird. Natürlich gibt es hier eine Menge Flexibilität hinsichtlich der Art und Weise, wie und wann Sie die Funktion definieren, so dass Sie zum Beispiel etwas allgemeineres tun könnten, wie den Screenmanager als erstes Argument an die Funktion übergeben.
Ich habe diesen Code nicht getestet und es ist keine vollständige App, aber hoffentlich ist die Bedeutung klar. Beide Methoden sollten gut funktionieren. Sie können wählen, was am sinnvollsten ist. Ich könnte später ein vollständigeres Beispiel konstruieren.
Vielen Dank für Ihre Antwort. Die Verwendung der Unterklassen-Lösung hat mir geholfen, das zu erreichen, was ich versuchte. Danke noch einmal. – Derick