我制作的标签应该每隔一秒左右更新一次。我尝试用时钟表制作它,但它似乎不起作用。奇怪的是,如果我使用一个按钮调用相同的功能,它可以正常工作。
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.properties import StringProperty
from kivy.clock import Clock
class FirstLayout(BoxLayout):
r = 0
def __init__(self, **kwargs):
super(FirstLayout, self).__init__(**kwargs)
self.change = self.ids.temp_label
def my_callback(self, *args):
self.r += 1
print self.r
t = str(self.r)
self.change.text = t
class TryApp(App):
def build(self):
Clock.schedule_interval(FirstLayout().my_callback, 1)
return FirstLayout()
app = TryApp()
app.run()
.kv文件:
<FirstLayout>:
orientation: 'vertical'
Label:
id: temp_label
text: 'something'
Button:
on_press: root.my_callback()
当我运行代码时,我得到的打印件显示该功能正在运行,但标签没有更新。我的逻辑有什么问题吗?
提前谢谢。
PS:我知道这里有几个问题,遗憾的是我找到的答案是关于使用我已经做过的时钟的答案答案 0 :(得分:0)
问题是回调适用于不使用的实例:
def build(self):
Clock.schedule_interval(FirstLayout().my_callback, 1) #<--- FirstLayout created and never used
return FirstLayout() #this one will be used :(
相反,您需要调用正在使用的FirstLayout方法
def build(self):
first_layout = FirstLayout() # "There should be one ..." :)
Clock.schedule_interval(first_layout.my_callback, 1)
return first_layout