Почему экраны моего приложения объединяются? - PullRequest
0 голосов
/ 03 августа 2020

Я создаю страницу входа и регистрации для приложения с помощью kivy, но когда я запускаю программу, оба экрана объединяются. Пожалуйста, помогите мне. Это мой код 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()

Это мой код 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"

Вот как он должен выглядеть: -

Страница входа

Страница регистрации

Но это страница ошибки: -

Страница ошибки

Помогите, пожалуйста.

1 Ответ

0 голосов
/ 03 августа 2020

Попробуйте изменить:

class RootWidget(Screen):
    pass

на:

class RootWidget(ScreenManager):
    pass

Вы добавляете Screens к Screen, когда я считаю, что вы хотите добавить их к ScreenManager.

...