为什么 kivy 一次更改所有小部件
Why kivy changes all widgets at once
我创建了 Button 小部件的子class。在处理 on_touch_down 事件时,我想更改按钮文本以进行调试。当我单击一个按钮时,所有此类按钮的文本都会更改。为什么?如何仅更改单击按钮上的文本?
按钮class:
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
event/method 确实会进行碰撞检查。无论如何,这通常是与按钮交互的更好方式。
我创建了 Button 小部件的子class。在处理 on_touch_down 事件时,我想更改按钮文本以进行调试。当我单击一个按钮时,所有此类按钮的文本都会更改。为什么?如何仅更改单击按钮上的文本?
按钮class:
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
event/method 确实会进行碰撞检查。无论如何,这通常是与按钮交互的更好方式。