将一行文本从文件加载到Kivy标签

时间:2015-06-23 15:43:34

标签: python kivy

我想创建一个简单的程序,它只显示存储在文本文件中的定义。一个标签和按钮显示下一个定义。我尝试用文档来做,但我找不到如何将文本加载到标签。有人能告诉我一些好的资源或代码样本吗?

我现在的代码(我希望在kivy网站的示例之上构建):

import kivy
kivy.require('1.9.0')

from kivy.app import App
from kivy.uix.label import Label
class MyApp(App):
    def build(self):
        return Label(text = 'Hello world')

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

1 个答案:

答案 0 :(得分:3)

在UI中更新小部件的最简单方法是bindingproperties。这可以在代码中完成,但在我看来,kivy的真正力量来自于使用它declarative UI language。使用kv,您将获得自动绑定。

以下是您可能会做的一个简单示例:

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

kv = '''

BoxLayout:
    orientation: 'vertical'
    Label:
        text: app.text
    Button:
        text: 'click me'
        on_press: app.clicked()

'''


class MyApp(App):
    text = StringProperty("hello world")

    def build(self):
        return Builder.load_string(kv)

    def clicked(self):
        self.text = "clicked!"


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

在UI的kv描述中,您告诉kivy您希望Label上的文本绑定到您在类上定义的应用程序上的StringProperty。自动绑定意味着无论何时为该属性设置值(如在单击的函数中),UI都将自动使用新值进行更新。