一つの簡単な方法は、あなた自身のボタンサブクラスを定義することです:
class ScreenButton(Button):
screenmanager = ObjectProperty()
def on_press(self, *args):
super(ScreenButton, self).on_press(*args)
self.screenmanager.current = 'whatever'
on_press方法は、ボタンが押されたときに自動的に呼び出されるので、ScreenManagerでのcurrent
プロパティが変更されます。
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)
必要に応じて画面を切り替える必要があるボタンをクリック:
次に、あなたのようなコードに何かを持つことができます。
もう1つの方法(おそらくkv言語が実際にどのようにしているか)は、手動でbind
メソッドを使用することです。
def switching_function(*args):
some_screen_manager.current = 'whatever'
some_button.bind(on_press=switching_function)
これはsome_button
が押されるたびにswitching_function
が呼び出されることを意味します。もちろん、ここでは関数を定義する方法とタイミングについて柔軟性があります。たとえば、スクリーンマネージャを関数の最初の引数として渡すようなもっと一般的な方法があります。
私はこのコードをテストしなかったし、完全なアプリではありませんが、うまくいけば意味がはっきりしています。いずれの方法でもうまくいくはずですが、最も賢明な方法を選択できます。私は後でより完全な例を作るかもしれない。
感謝。サブクラスのソリューションを使用すると、私がやろうとしていたことを達成するのに役立ちました。再度、感謝します。 – Derick