在 kivy 中加载构建器时出错:缩进无效,必须是 _ 空格的倍数

Error while builder loading in kivy: Invalid indentation, must be a multiple of _ spaces

所以我一直在开发一个 kivy 应用程序,但在使用 Builder 加载一些 kv 语言时遇到了一些问题,当我 运行 它时代码崩溃了。

错误信息:

   File "C:\Users\areef\PycharmProjects\pythonProject1\venv\venev2\lib\site-packages\kivy\lang\parser.py", line 566, in parse_level
     raise ParserException(self, ln,
 kivy.lang.parser.ParserException: Parser: File "<inline>", line 3:
 ...
       1:Screen:
       2:        FloatLayout:
 >>    3:            Button:
       4:                text: "It works!"
       5:                pos_hint: {"x": 0.1, "y": 0.7}
 ...
 Invalid indentation, must be a multiple of 8 spaces

代码:

from kivy.app import App
from kivy.lang import Builder

kv = """Screen:
        FloatLayout:
            Button:
                text: "It works!"
                pos_hint: {"x": 0.1, "y": 0.7}
                text_size: self.size
        """


class MyApp(App):
    def build(self):
        self.screen = Builder.load_string(kv)
        return self.screen


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

我做错了什么,有人可以帮我解决这个错误吗?

当您使用三引号字符串时,每行的前导空格都是字符串的一部分。 cube 字符串中的第一个缩进是 20 个空格,因此所有缩进都应该是它的倍数。要解决这个问题,只需消除所有这些额外的空间。尝试类似的东西:

        cube = """
Label:
    text:"Side:"
    pos_hint: {"x":1.1, "y":0.7}
    text_size: self.size
Label:
    text:"Volume:"     
    .
    .
    .
           

其中 Labels 为零缩进。这将解决您看到的错误,并且会出现另一个错误(与格式无关)。