我想知道是否可以立即更新kv布局文件中描述的标签的属性,如下所示:
BoxLayout:
orientation: 'horizontal'
Label:
id: new_order
font_size: 40
text: ''
这是因为在我的应用程序中,我设置了两个时钟计划间隔对象,我不希望它们同时工作。
class MyApp(App):
def on_start(self):
Clock.schedule_interval(self.update_label, 1)
Clock.schedule_interval(self.play_sounds, 1)
def update_label(self):
# does something
self.root.ids.new_order.text="Updated Text"
# does something more
def play_sounds(self):
for i in range(10):
sound.play()
sleep(2)
但是标签总是在play_sounds()方法退出后更新。那么,在update_label()方法中将显示的标签文本设置为“updated text”之后,有没有一种方法可以立即更新它?
2条答案
按热度按时间o2gm4chl1#
你可以把它套起来
Clock.schedule_interval
. 在函数的主逻辑体之后的函数中,可以放入另一个Clock.schedule_interval
使用下一个要调用的函数。我建议在内部函数中使用时钟lambda函数来创建一个线性函数。xjreopfe2#
你的
play_sounds()
方法运行至少需要20秒(因为sleep
)您正在尝试每秒运行该方法。听起来是个坏主意。此外,sleep
冻结整个gui,因为它是在主线程上运行的。试着改变play_sounds()
致: