将main.py与.kv文件链接

时间:2015-07-14 04:24:10

标签: python kivy

我正在尝试在我的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变量中的文本的标签

1 个答案:

答案 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