我在python kivy代码中遇到问题

时间:2020-08-18 17:52:25

标签: python python-3.x user-interface kivy kivy-language

所以我正在写我的第一个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中搜索了此信息,但没有找到合适的解决方案。

1 个答案:

答案 0 :(得分:0)

您需要定义您的WindowManager

class WindowManager(ScreenManager):
    pass

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

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