立即更新标签文本属性

7ivaypg9  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(243)

我想知道是否可以立即更新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”之后,有没有一种方法可以立即更新它?

o2gm4chl

o2gm4chl1#

你可以把它套起来 Clock.schedule_interval . 在函数的主逻辑体之后的函数中,可以放入另一个 Clock.schedule_interval 使用下一个要调用的函数。我建议在内部函数中使用时钟lambda函数来创建一个线性函数。

xjreopfe

xjreopfe2#

你的 play_sounds() 方法运行至少需要20秒(因为 sleep )您正在尝试每秒运行该方法。听起来是个坏主意。此外, sleep 冻结整个gui,因为它是在主线程上运行的。试着改变 play_sounds() 致:

def play_sounds(self, dt):
    sound = SoundLoader.load('some_sound_file')
    sound.play()

相关问题