我正在尝试在我的w
文件中找到一个包含main.py
变量中字符串文本的标签,标签位于.kv file
,让我向您显示这两个文件。
这里是main.py文件
from kivy.app import App
from kivy.properties import StringProperty
class ExampleApp(App):
def hell(self):
w="hello world"
def build(self):
self.load_kv("exapmleapp.kv")
if __name__ == "__main__":
ExampleApp().run()
这是我的.kv
文件。
Label:
text:app.w
每次运行main.py文件时,都会出现此错误。
1: 2:标签: 3:text:app.w ... AttributeError:' ExampleApp'对象没有属性' w'文件 " /usr/local/lib/python2.7/dist-packages/kivy/lang.py" ;,第1649行, create_handler return eval(value,idmap)File" ./ exampleapp.kv",第3行,in text:app.w File" /usr/local/lib/python2.7/dist-packages/kivy/lang.py" ;,第858行,在 的的getAttribute return getattr(object。 getattribute (self,' _obj'),name) 文件" /usr/local/lib/python2.7/dist-packages/kivy/lang.py" ;, 2011年,在_apply_rule value,rule,rctx [' ids'])文件" /usr/local/lib/python2.7/dist-packages/kivy/lang.py" ;,第1654行,in create_handler 原因= TB)
如何在main.py文件中获取存储在w变量中的文本的标签
答案 0 :(得分:2)
我不认为.kv文件可以看到您正在调用的函数内的属性。 正如您在下面的示例中所看到的,我已经移动了' w'功能之外的属性。
编辑:似乎你想在调用函数 hell()时更改显示的标签。 首先,我们需要一种简单的方法来引用标签。 Kivy使用 id标记,并且可以在 self.ids
中找到ID列表拥有' w'变量不再是必需的,但我已经离开了它,因为它回答了原始的问题。
所以,这应该在理论上起作用:
from kivy.app import App
from kivy.properties import StringProperty
class ExampleApp(App):
w = "hello"
def hell(self):
self.ids.mylabel.text = "world"
def build(self):
self.load_kv("exapmleapp.kv")
if __name__ == "__main__":
ExampleApp().run()
.kv文件:
Label:
id: mylabel
text:app.w