Estoy creando la página de inicio de sesión y registro para una aplicación que usa kivy, pero cuando ejecuto el programa, ambas pantallas se unen. Por favor, ayúdame. Este es mi código de Python: -

from kivy.app import App
from kivy.lang import Builder
from kivy.core.text import LabelBase
from kivy.uix.screenmanager import ScreenManager, Screen

Builder.load_file('design.kv')

LabelBase.register(name= "oswald",
fn_regular= "oswald/Oswald-Regular.ttf")


class LoginScreen(Screen):
    def sign_up(self):
        self.manager.current = "signup_screen"

class SignupScreen(Screen):
    pass

class RootWidget(Screen):
    pass

class MainApp(App):
    def build(self):
        return RootWidget()

if __name__ == "__main__":
    MainApp().run()

Este es mi código kivy: -

<LoginScreen>:
    GridLayout:
        cols: 1
        GridLayout:
            cols: 1
            Label: 
                text: "User Login"
            TextInput:
                hint_text: "Username"
            TextInput:
                hint_text: "Password"
            Button:
                text: "Login"
        GridLayout:
            cols: 2
            Button:
                text: "Forgot Password?"
            Button: 
                text: "Signup here"
                on_press: root.sign_up()


<SignupScreen>:
    GridLayout:
        cols:1
        Label:
            text: "Signup for lots of fun!!!"
        TextInput:
            hint_text: "Username"
        TextInput:
            hint_text: "Password"
        Button:
            text: "Signup"

<RootWidget>:
    LoginScreen:
        name: "login_screen"
    SignupScreen:
        name: "signup_screen"

Así es como se supone que debe verse: -

Página de inicio de sesión

Página de registro

Pero esta es la página de error: -

Página de error

Por favor, ayúdame.

0
Aryan Basle 3 ago. 2020 a las 08:25

1 respuesta

La mejor respuesta

Intenta cambiar:

class RootWidget(Screen):
    pass

Para:

class RootWidget(ScreenManager):
    pass

Estás agregando Screens a Screen, cuando creo que quieres agregarlos a ScreenManager.

0
John Anderson 3 ago. 2020 a las 13:44