Reputation:
`from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.gridlayout import GridLayout
from kivy.uix.screenmanager import ScreenManager, Screen
class Login(Screen):
def main(self):
layout = GridLayout()
def btn():
sm.switch_to(Screen(name='account'))
self.bt = Button(text='tela 1',
size_hint=(None,None),
size=(592,86),
pos=(50,50), on_press=btn,
background_color=(1,0,0,0))
layout.add_widget(self.bt)
return layout
class Account(Screen):
def main2(self):
lt = GridLayout()
def btnn():
sm.switch_to(Screen(name='login'))
self.btt = Button(text='telaa 2',
size_hint=(None,None),
size=(592,86),
pos=(50, 50), on_press=btnn,
background_color=(1,0,0,0))
lt.add_widget(self.btt)
return lt
sm = ScreenManager()
sm.add_widget(Login(name='login'))
sm.add_widget(Account(name='account'))
class TestApp(App):
def build(self):
return sm
if _name_ == '_main_':
TestApp().run()
`I started with kivy today, but as it is only a passing novel, I do not intend to learn kivy language.
All the tutorials I see on the internet about screen manager use kivy language. How do I scroll through 2 screens using only python? I tried to translate from kivy language to python but all I got was a black screen.
Upvotes: 0
Views: 543
Reputation: 142631
This is minimal example which uses Python code (not kv language) to create Screen
with Button
which changes screen in screen manager.
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.boxlayout import BoxLayout
# Declare both screens
class MenuScreen(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.layout = BoxLayout()
self.add_widget(self.layout)
self.label = Label(text='Menu Screen')
self.layout.add_widget(self.label)
self.button = Button(text='Go To Settings')
self.button.bind(on_press=self.change_screen)
self.layout.add_widget(self.button)
def change_screen(self, event):
#sm.current = 'settings'
self.manager.transition.direction = 'up'
self.manager.transition.duration = 3 # 3 seconds
self.manager.current = 'settings'
class SettingsScreen(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.layout = FloatLayout()
self.add_widget(self.layout)
self.label = Label(text='Settings Screen')
self.layout.add_widget(self.label)
self.button = Button(text='Go To Menu', size_hint=(.5, .10), pos=(20, 20))
self.button.bind(on_press=self.change_screen)
self.layout.add_widget(self.button)
def change_screen(self, event):
#sm.current = 'menu'
self.manager.transition.direction = 'right'
self.manager.transition.duration = 0.5 # 0.5 second
self.manager.current = 'menu'
# Create the screen manager
sm = ScreenManager()
sm.add_widget(MenuScreen(name='menu'))
sm.add_widget(SettingsScreen(name='settings'))
class TestApp(App):
def build(self):
return sm
if __name__ == '__main__':
TestApp().run()
Based on example (which uses kv language) from documentation Screen Manager
Upvotes: 1