Kivy Python 非常基本的标签文本绑定

Kivy Python very basic Binding of Label Text

我知道这可能是一个非常基本的问题,但我花了几个小时思考后仍然无法弄明白。

我基本上只想将标签文本绑定到 python 代码中的变量。让我们称之为 value。但是它应该在每次我 运行 循环 Clock.schedule_interval(RootWidget.update, 1.0/1.0)

时得到更新

这里是 python,经过简化,所以它基本上只是时间,它也被打印出来只是为了看看它是否真的有效。

from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.clock import Clock
from kivy.core.window import Window
import time

class RootWidget(FloatLayout):


    def update(self, *args):
        value = time.time()
        print value
        self.ids.value_label.text = str(value)


class MainApp(App):

    def build(self):
        Window.size = (800, 480)
        r = RootWidget()
        Clock.schedule_interval(r.update, 1)
        print 'build running'
        return r

    def on_pause(self):
        return True

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

kv 文件如下所示:

<RootWidget>:

Label:
    id: value_label
    text:
    y: 20.0
    x: 0.0
    width: 100.0
    italic: False
    height: 50.0
Clock.schedule_interval(RootWidget.update, 1.0/1.0)

您需要安排 实例 的更新方法,而不是 class 本身。

例如:

r = RootWidget()
Clock.schedule_interval(r.update, 1)
return r

时钟默认会传递一些参数,所以你也应该声明更新方法来接受这些。如果你不想使用它们,那么你可以这样做:

def update(self, *args):
    ...