Adam Kamil
Adam Kamil

Reputation: 151

Kivy Creating screens as variables

I have a question about kivy. Is it possible to create screens as variables? Lets say I want to create a new screen with a button inside the kivy application. Is it possible to do that? If so how could you do it??

Upvotes: 0

Views: 371

Answers (1)

eyllanesc
eyllanesc

Reputation: 243897

You just have to create a Screen object that you want to create and add it to the ScreenManager:

screen = Your_Screen(name="some_name")
your_screen_manager.add_widget(screen)

Example:

from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.button import Button

class TestScreen(Screen):
    def __init__(self, **kwargs):
        Screen.__init__(self, **kwargs)
        layout = BoxLayout(orientation="vertical")
        self.add_widget(layout)
        layout.add_widget(Label(text=self.name))
        button = Button(text="{}: Add Screen".format(self.name))
        layout.add_widget(button)
        button.bind(on_press=self.add_screen)

    def add_screen(self, *args):
        n = len(self.manager.screen_names)
        screen = TestScreen(name="screen {}".format(n))
        self.manager.add_widget(screen)
        self.manager.current = screen.name 

# Create the screen manager
sm = ScreenManager()
sm.add_widget(TestScreen(name='screen 0'))

class TestApp(App):
    def build(self):
        return sm

if __name__ == '__main__':
    TestApp().run()

Upvotes: 2

Related Questions