如何将.py文件中的变量带到.kv文件?

时间:2016-12-20 17:30:02

标签: python kivy kivy-language

Kv语言有一种使用以下语法从其他文件导入名称的方法:

#:import name x.y.z

# The same as `from x.y import z as name` in Python code

但它没有提到如何从使用该kv语言的同一模块中导入值 假设我有以下代码:

from kivy.app import App
from kivy.lang import Builder
from kivy.atlas import Atlas
from kivy.uix.button import Button

theme = Atlas('path/to/atlas')

Builder.load_string('''
<MyWidget>:
    background_normal: theme['widget_bg']
''')

class MyWidget(Button):
    pass

class TestApp(App):
    def build(self):
       return MyWidget() 

TestApp().run()

我想将theme Atlas对象导入到kv代码中以设置正确的背景。怎么可以这样做?

1 个答案:

答案 0 :(得分:1)

您可以将当前模块称为__main __

#:import theme __main__.theme

<MyWidget>:
   background_normal: theme['widget_bg']