为什么kivy一次更改所有小部件

时间:2015-10-12 20:51:56

标签: python kivy

我创建了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'

谢谢!

1 个答案:

答案 0 :(得分:4)

on_touch_down没有进行碰撞检查,因此小部件可以与其区域外的触摸进行交互。您可以在代码之前添加&{39; if self.collide_point(*touch.pos): ...(并将您的添加内容缩进到if语句中),以使其按预期工作。

正如您所发现的,on_press事件/方法确实进行了碰撞检查。无论如何,这通常是与按钮交互的更好方式。