kivy AttributeError: 'button' object has no attribute 'background_color'

kivy AttributeError: 'button' object has no attribute 'background_color'

实际上,我正在测试 kivy,这是我刚安装的,我做了一个简单的程序来测试它,程序如下:-

from kivy.app import App
from kivy.uix.widget import Widget

class button(Widget):
    pass

class ButtonApp(App):
    def build(self):
        return button()

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

当我运行它时,我得到以下错误。我试图解决它并在 google 上搜索了太多次但没有得到解决方案。请帮帮我。

 Traceback (most recent call last):
   File "/root/PycharmProjects/untitled/Button.py", line 12, in <module>
     ButtonApp().run()
   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/app.py", line 802, in run
     root = self.build()
   File "/root/PycharmProjects/untitled/Button.py", line 9, in build
     return button()
   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/uix/widget.py", line 345, in __init__
     Builder.apply(self, ignored_consts=self._kwargs_applied_init)
   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/lang/builder.py", line 451, in apply
     self._apply_rule(widget, rule, rule, ignored_consts=ignored_consts)
   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/lang/builder.py", line 506, in _apply_rule
     rule.canvas_root, rootrule)
   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/lang/builder.py", line 831, in _build_canvas
     '{}: {}'.format(e.__class__.__name__, e), cause=tb)
 kivy.lang.builder.BuilderException: Parser: File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/data/style.kv", line 17:
 ...
      15:    canvas:
      16:        Color:
 >>   17:            rgba: self.background_color
      18:        BorderImage:
      19:            border: self.border
 ...
 BuilderException: Parser: File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/data/style.kv", line 17:
 ...
      15:    canvas:
      16:        Color:
 >>   17:            rgba: self.background_color
      18:        BorderImage:
      19:            border: self.border
 ...
 AttributeError: 'button' object has no attribute 'background_color'
   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/lang/builder.py", line 249, in create_handler
     return eval(value, idmap), bound_list
   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/data/style.kv", line 17, in <module>
     rgba: self.background_color
   File "kivy/weakproxy.pyx", line 30, in kivy.weakproxy.WeakProxy.__getattr__ (/tmp/pip-build-LU3E8I/kivy/kivy/weakproxy.c:1386)

   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/lang/builder.py", line 825, in _build_canvas
     key, value, prule, idmap, True)
   File "/root/kivyinstall/local/lib/python2.7/site-packages/kivy/lang/builder.py", line 254, in create_handler
     cause=tb)


Process finished with exit code 1

已经有一个名为 Button 的 Kivy 小部件。由于 kv 语言中区分大小写的限制,您自己的 button class 与此冲突。

一般来说,您应该为小部件 class 名称使用 CamelCase(与 pep8 一致),并避免复制 Kivy 的内置 class 名称。这将确保一切正常工作。