我创建了 Button 小部件的子类。在处理 on_touch_down 事件时,我想更改按钮文本以进行调试。当我单击一个按钮时,所有此类按钮的文本都会更改。为什么?如何仅更改单击按钮上的文本?
按钮类:
class FigureButton(Button):
def on_touch_down(self, touch):
super(FigureButton, self).on_touch_down(touch)
self.text = 'Clicked'
.kv文件部分:
FigureButton:
text: '1'
FigureButton:
text: '2'
谢谢!
最佳答案
on_touch_down
不进行碰撞检查,因此小部件可以与区域外的触摸进行交互。您可以在您的代码之前添加 'if self.collide_point(*touch.pos): ...
(并将您添加的内容缩进到 if 语句中)以使此工作如您所愿。
正如您所发现的,on_press
事件/方法确实进行了碰撞检查。无论如何,这通常是与按钮交互的更好方式。
关于python - 为什么 kivy 一次更改所有小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33089990/