Reputation: 13
I'm sure this will be another easy one, but I'm not sure how to access my screen manager from within the different screens in python code. I can get it to switch with root.manager.current = 'screen' in the kv file, but this obviously doesn't work in python.
my.kv:
...
<Screen3>
GridLayout:
Button:
text:"submit"
on_press: root.submit()
main.py
from kivy import yadayada
kv_str = """
<Screen1>
canvas:
Rectangle:
pos: self.pos
size: self.size
<Screen2>
canvas:
Rectangle:
pos: self.pos
size: self.size
<Screen3>
canvas:
Rectangle:
pos: self.pos
size: self.size
"""
Builder.load_string(kv_str)
class Screen1(Screen):
pass
class Screen2(Screen):
pass
class Screen3(Screen):
def submit(self):
#trying to switch screens here
class MyApp(App):
def build(self):
sm = ScreenManager()
sm.add_widget(Screen1(name='screen1'))
sm.add_widget(Screen2(name='screen2'))
sm.add_widget(Screen3(name='screen3'))
return sm
if __name__ == '__main__':
MyApp().run()
Upvotes: 1
Views: 504
Reputation: 39002
In your submit()
method you can use:
self.manager.current = `screen1`
Upvotes: 1