Kivy在画布上动态更新标签

时间:2019-11-14 14:49:12

标签: python label kivy

我正在尝试更新画布上的Label,但是只有当我从MyApp(APP)调用update()方法时,它才会更改。

有趣的是obj Slider(触摸)方法完美工作

snapshot.hasData

我正在尝试更新画布上的Label,但是只有当我从MyApp(APP)调用update()方法时,它才会更改。

有趣的是obj Slider(触摸)方法完美工作

1 个答案:

答案 0 :(得分:0)

您的代码有一些问题:

  • color的{​​{1}}属性需要四个值的列表,每个值的范围是0到1。在{{1中将Label更改为self.label_text =Label(text= "0",color = (255,0,0)) }}类。
  • 上面的self.label_text =Label(text= "0",color = (1,0,0,1))从未被绘制过。您需要将Canvas_w添加到Label的{​​{1}}方法中。
  • self.add_widget(self.label_text)类中还有另一个__init__(),该类被绘制在Canvas_wLabel的顶部。

解决上述问题后,我相信您的代码将按预期工作。

如果您呼叫Label_l,则好像Label的{​​{1}}子级已被删除。实际上,它并没有被删除,但是只是不可见(可能被覆盖)。使其可见的一种方法是,只需将其删除就可以确保最后绘制,然后重新添加(最后添加的子项最后绘制),如下所示:

Canvas_w

经过更多的研究,我相信self.canvas.clear()正在从label_text中删除Canvas_w的图形。但是,您可以使用以下方法在 self.canvas.clear() self.remove_widget(self.label_text) self.add_widget(self.label_text) 上绘制图形:

canvas.clear()

Label方法中。而不是使用:

Canvas

使用:

canvas.before

我相信完成上述操作后,您的with self.canvas.before: 将会正确显示。