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 名称。这将确保一切正常工作。
实际上,我正在测试 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 名称。这将确保一切正常工作。