所以我正在写我的第一个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中搜索了此信息,但没有找到合适的解决方案。
答案 0 :(得分:0)
您需要定义您的WindowManager
:
class WindowManager(ScreenManager):
pass
在加载kv
文件之前。进行kv
加载的一种通常安全的方法是在build()
方法内调用它,如下所示:
class KrxLS(App):
def build(self):
kv = Builder.load_file("krxls.kv")
return kv