首页 > 解决方案 > 获取“ TypeError:'NoneType'对象不可下标”错误

问题描述

我有以下 Python 代码和 Kivy 配置文件,直接取自教程:

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"

我收到以下错误消息:

[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

怎么了?

标签: pythonpython-3.xkivynonetype

解决方案


你有错误的缩进。size:并且Button:必须从同一列开始。

<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"

推荐阅读