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):
...
我知道这可能是一个非常基本的问题,但我花了几个小时思考后仍然无法弄明白。
我基本上只想将标签文本绑定到 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):
...