I have the following Python code and Kivy configuration file, taken directly from a tutorial:
import kivy
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty
from kivy.lang import Builder
from kivy.core.window import Window
Builder.load_file('float_layout.kv')
class MyLayout(Widget):
pass
class AwesomeApp(App):
def build(self):
Window.clearcolor = (1,1,1,1)
return MyLayout()
if __name__ == '__main__':
AwesomeApp().run()
<Button>
font_size: 32
size_hint: (0.3, 0.3)
<MyLayout>
FloatLayout:
size: root.width, root.height
Button:
text: "q1"
Button:
text: "q2"
Button:
text: "C"
Button:
text: "q3"
Button:
text: "q4"
I get the following error message:
[INFO ] [Window ] virtual keyboard not allowed, single mode, not docked
Traceback (most recent call last):
File "/Users/JIM/PycharmProjects/test_float/main.py", line 8, in <module>
Builder.load_file('float_layout.kv')
File "/Users/JIM/PycharmProjects/test_float/venv/lib/python3.9/site-packages/kivy/lang/builder.py", line 306, in load_file
return self.load_string(data, **kwargs)
File "/Users/JIM/PycharmProjects/test_float/venv/lib/python3.9/site-packages/kivy/lang/builder.py", line 373, in load_string
parser = Parser(content=string, filename=fn)
File "/Users/JIM/PycharmProjects/test_float/venv/lib/python3.9/site-packages/kivy/lang/parser.py", line 402, in __init__
self.parse(content)
File "/Users/JIM/PycharmProjects/test_float/venv/lib/python3.9/site-packages/kivy/lang/parser.py", line 511, in parse
objects, remaining_lines = self.parse_level(0, lines)
File "/Users/JIM/PycharmProjects/test_float/venv/lib/python3.9/site-packages/kivy/lang/parser.py", line 614, in parse_level
_objects, _lines = self.parse_level(
File "/Users/JIM/PycharmProjects/test_float/venv/lib/python3.9/site-packages/kivy/lang/parser.py", line 674, in parse_level
if current_property[:3] == 'on_':
TypeError: 'NoneType' object is not subscriptable
What is wrong?
You have wrong indentations. size:
and Button:
have to start in the same column.
<Button>
font_size: 32
size_hint: (0.3, 0.3)
<MyLayout>
FloatLayout:
size: root.width, root.height
Button:
text: "q1"
Button:
text: "q2"
Button:
text: "C"
Button:
text: "q3"
Button:
text: "q4"