【问题标题】:I am facing a problem in my python kivy code我在我的 python kivy 代码中遇到问题
【发布时间】:2020-08-18 17:52:25
【问题描述】:

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

【问题讨论】:

  • 这完全是猜测,但您的.kv 文件的第一行应该是&lt;WindowManager&gt; 而不是WindowManager
  • 您尚未定义WindowManager 类。
  • 我在代码中将WindowManager 改为&lt;WindowManager&gt;,现在我面临这个错误[CRITICAL] [Application ] No window is created. Terminating application run.@MattDMo。对不起,您所说的“您尚未定义 WindowManager 类”是什么意思。因为我已经在 python 代码中创建了那个类。谢谢你的时间:) @JohnAnderson

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


【解决方案1】:

你需要定义你的WindowManager:

class WindowManager(ScreenManager):
    pass

在加载 kv 文件之前。执行kv 加载的一般安全方法是在build() 方法中调用它,如下所示:

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

【讨论】:

    猜你喜欢
    • 2021-05-19
    • 2022-01-27
    • 2021-04-05
    • 2021-12-30
    • 1970-01-01
    • 2021-10-19
    • 2022-01-24
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多