OSM
OSM

Reputation: 439

Screen manager issue in kivy

I am experimenting with Kivy. When I tried using a screen manager, when the application runs, there is a black screen, nothing appears

That is my code. I have no idea what is the problem. It seems that the GridLayout doesn't get displayed on the screen.

import kivy
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.graphics import *
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, SlideTransition

class load_file_screen(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.my_layout = GridLayout(cols=1)
        self.my_layout.cols = 1
        self.label = Label(text="Loading files from here")
        self.button = Button(text="Click to change")
        self.button.bind(on_press=self.changer)
        self.my_layout.add_widget(self.label)
        self.my_layout.add_widget(self.button)

    def changer(self, *args):
        self.manager.current = "ViewFile"

class view_file_screen(Screen):
    def __init__(self, **kwargs):
        super().__init__(**kwargs)
        self.my_layout = GridLayout(cols=1)
        self.label = Label(text="View File here")
        self.button = Button(text="Click to change")
        self.button.bind(on_press=self.changer)
        self.my_layout.add_widget(self.label)
        self.my_layout.add_widget(self.button)

    def changer(self, *args):
        self.manager.current = "LoadFile"

class my_app(App):
    def build(self):
        self.my_screen_manger = ScreenManager(transition=SlideTransition())
        self.my_screen_manger.add_widget(load_file_screen(name="LoadFile"))
        self.my_screen_manger.add_widget(view_file_screen(name="ViewFile"))
        # self.my_screen_manger.current = "LoadFile"
        return self.my_screen_manger

application = my_app()
application.run()

Upvotes: 1

Views: 64

Answers (1)

John Anderson
John Anderson

Reputation: 39152

In both your view_file_screen and your load_file_screen, you need to add the line:

self.add_widget(self.my_layout)

in the __init__() method.

Upvotes: 1

Related Questions