我创建了Button小部件的子类。在处理on_touch_down事件时,我想更改按钮文本以进行调试。当我单击一个按钮时,此类型的所有按钮都会更改其文本。为什么?如何仅更改单击按钮上的文本?
按钮类:
public void setSubtitle(String subtitle) {
this.subtitle = subtitle.replace("\\n", System.getProperty("line.separator"));
}
.kv文件部分:
class FigureButton(Button):
def on_touch_down(self, touch):
super(FigureButton, self).on_touch_down(touch)
self.text = 'Clicked'
谢谢!
答案 0 :(得分:4)
on_touch_down
没有进行碰撞检查,因此小部件可以与其区域外的触摸进行交互。您可以在代码之前添加&{39; if self.collide_point(*touch.pos): ...
(并将您的添加内容缩进到if语句中),以使其按预期工作。
正如您所发现的,on_press
事件/方法确实进行了碰撞检查。无论如何,这通常是与按钮交互的更好方式。