我在python kivy代码中遇到问题

问题描述

所以我正在写我的第一个python kivy代码,遇到了这个问题。尝试搜索,但不太了解如何解决。您能否更正我的代码并告诉我出什么问题了?

import kivy
from kivy.app import App
from kivy.config import Config
from kivy.lang.builder import Builder
from kivy.uix.screenmanager import Screen,ScreenManager
Config.set('graphics','width','400')
Config.set('graphics','height','150')

kv = Builder.load_file("krxls.kv")


class LoginPage(Screen):
    pass

class RegisterPage(Screen):
    pass

class WindowManager(ScreenManager):
    pass



class KrxLS(App):
    def build(self):
        return kv


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

这是我的kv文件

WindowManager:
    LoginPage:
    RegisterPage:

<LoginPage>:
    name: "lp"
    GridLayout:
        cols: 1
        Label:
            text: "Login!!"
        GridLayout:
            cols: 2
            Label:
                text: "Username"
            TextInput:
                multiline: "False"
            Label:
                text: "Password"
            TextInput:
                multiline: "False"
            Button:
                text: "Sign up"
                on_release: app.root.current = "rp"
            Button:
                text: "Sign in!"

<RegisterPage>:
    name: "rp"
    GridLayout:
        cols: 1
        Label:
            text: "Register!!"
        GridLayout:
            cols: 2
            Label:
                text: "Username"
            TextInput:
                multiline: "False"
            Label:
                text: "Password"
            TextInput:
                multiline: "False"
            Button:
                text: "Sign in"
                on_release: app.root.current = "lp"
            Button:
                text: "Sign Up!"

我收到此错误

 Traceback (most recent call last):
   File "/Users/randomman/PycharmProjects/Beginner/GUIDev/kivyGUI.py",line 12,in <module>
     kv = Builder.load_file("krxls.kv")
   File "/Users/randomman/PycharmProjects/Beginner/venv/lib/python3.7/site-packages/kivy/lang/builder.py",line 301,in load_file
     return self.load_string(data,**kwargs)
   File "/Users/randomman/PycharmProjects/Beginner/venv/lib/python3.7/site-packages/kivy/lang/builder.py",line 399,in load_string
     widget = Factory.get(parser.root.name)(__no_builder=True)
   File "/Users/randomman/PycharmProjects/Beginner/venv/lib/python3.7/site-packages/kivy/factory.py",line 131,in __getattr__
     raise FactoryException('UnkNown class <%s>' % name)
 kivy.factory.FactoryException: UnkNown class <WindowManager>

请帮助!! 我正在通过youtube vids学习kivy,并尝试关注它们,但出现了此错误...我已经在google中搜索了此信息,但没有找到合适的解决方案。

解决方法

您需要定义您的WindowManager

class WindowManager(ScreenManager):
    pass

在加载kv文件之前。进行kv加载的一种通常安全的方法是在build()方法内调用它,如下所示:

class KrxLS(App):
    def build(self):
        kv = Builder.load_file("krxls.kv")
        return kv