gpt4 book ai didi

python - 基维 : load_string() vs kv file

转载 作者:行者123 更新时间:2023-12-01 01:31:06 25 4
gpt4 key购买 nike

为了理解Kivy背后的逻辑kv language ,我正在尝试通过调用 Builder.load_string() 替换 kv 文件的自动加载来重写最小应用程序。

<小时/>

这是我的起点( source: examples 1-2, 1-3 ):两个文件,weather.pyweather.kv :

天气.py:

from kivy.app import App
class WeatherApp(App):
pass
if __name__ == '__main__':
WeatherApp().run()

weather.kv:

Label:
text: "Hello World"

到此为止,一切正常

result here .

但是如果我尝试手动加载 kv 内容,我只会看到黑屏(并且没有错误消息)。我的代码:

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

KV = '''
Label
text: "Hello World"
'''
Builder.load_string(KV)

class WeatherApp(App):
pass

if __name__ == '__main__':
WeatherApp().run()

我显然在这里遗漏了一些东西,但是什么?任何帮助将不胜感激!

最佳答案

当你创建一个.kv时,有基本但严格的规则,其中只能有一个顶级,顶级被识别是因为它没有“<>”,除了App要识别它之外,它还必须具有小写应用程序的名称相同,在您的情况下,.kv 称为 weather.kvWeather 应用程序应用程序。但是如果您使用 Builder,则不会发生上述情况,如果 .kv 有根,就像您的情况一样, Builder.load_string() 返回它,因此您必须在 build 方法中返回它应用程序的:

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

KV = '''
Label:
text: "Hello World"
'''
root = Builder.load_string(KV)

class WeatherApp(App):
def build(self):
return root

if __name__ == '__main__':
WeatherApp().run()

关于python - 基维 : load_string() vs kv file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52858255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com