Kivy 错误:raise FactoryException('Unknown class <%s>' % name)

Ray*_*yne 5 python kivy

我已经搜索并搜索了,但我就是不明白。从我从发布的答案中了解到,问题是该类没有定义或拼写错误,但我已经来回浏览了我的代码,但我看不到问题。现在我只是想获得没有功能的布局。我有两个文件,.py 和 .kv 文件,主要的 .py 是:

import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button


class Noughtsandcrosses(Widget):
    pass


class nandxApp(App):
    def build(self):
        return Noughtsandcrosses()

if __name__ == "__main__":
    nandxApp().run()
Run Code Online (Sandbox Code Playgroud)

.kv 文件是:

#:kivy 1.0

<Noughtsandcrosses>:
    orientation: 'vertical'
    size: self.size

    Threebythreeone:
        orientation: 'horizontal'

        Button:
            Image:
                source: "blank.png"
                size: 100, 100
Run Code Online (Sandbox Code Playgroud)

运行 .py 文件,这是我得到的错误:

Traceback (most recent call last):
   File "nandx.py", line 24, in <module>
     nandxApp().run()
   File "C:\Users\Rayne\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\app.py", line 802, in run
     root = self.build()
   File "nandx.py", line 21, in build
     return Noughtsandcrosses()
   File "C:\Users\Rayne\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\uix\widget.py", line 345, in __init__
     Builder.apply(self, ignored_consts=self._kwargs_applied_init)
   File "C:\Users\Rayne\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\lang\builder.py", line 451, in apply
     self._apply_rule(widget, rule, rule, ignored_consts=ignored_consts)
   File "C:\Users\Rayne\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\lang\builder.py", line 526, in _apply_rule
     cls = Factory_get(cname)
   File "C:\Users\Rayne\AppData\Local\Programs\Python\Python36-32\lib\site-packages\kivy\factory.py", line 131, in __getattr__
     raise FactoryException('Unknown class <%s>' % name)
 kivy.factory.FactoryException: Unknown class <Threebythreeone>
Run Code Online (Sandbox Code Playgroud)

我正在努力学习 kivy,但遇到这样的随机错误令人沮丧,谁能指出我做错了什么。

iko*_*lim 3

您遇到了错误 kivy.factory.FactoryException: Unknown class <Threebythirdone> 因为您在<Noughtsandcrosses>小部件规则 nandx.kv中有一个子小部件Threebythirdone

\n\n

我建议您查看编程指南 \xc2\xbb Kivy 基础知识和下面的示例。

\n\n

例子

\n\n

主要.py

\n\n
from kivy.app import App\nfrom kivy.uix.boxlayout import BoxLayout\n\n\nclass Threebythreeone(BoxLayout):\n    pass\n\n\nclass Noughtsandcrosses(BoxLayout):\n    pass\n\n\nclass nandxApp(App):\n    def build(self):\n        return Noughtsandcrosses()\n\n\nif __name__ == "__main__":\n    nandxApp().run()\n
Run Code Online (Sandbox Code Playgroud)\n\n

nandx.kv

\n\n
#:kivy 1.10.0\n\n<Threebythreeone>:\n    # orientation: \'horizontal\'   # Commented off because this is the default\n\n    Button:\n        Image:\n            source: "blank.png"\n            size: 100, 100\n\n<Noughtsandcrosses>:\n    orientation: \'vertical\'\n    size: self.size\n\n    Threebythreeone:\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出

\n\n

在此输入图像描述

\n

  • 相信我:您的回答比官方的回答要好得多。谢谢! (2认同)