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

标签 python kivy

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

相关文章:

python - 什么是 PyCharm "simplify chained comparison"

python - 如何使预启动屏幕适合设备的宽高比?

python - Kivy 不使用操作栏上的按钮更改屏幕

python - 在 Kivy 中启动多个小部件

python - Pandas :根据在其他列上应用字符串条件创建列

Python - 将美元值转换为 float

python - 是否可以使用 XGBoost 预测给定输入向量或一系列向量的整个输出向量?

python - 如何从我的 kivy 应用程序(Pyinstaller)获取 Windows 可执行文件?

python - kivy - 从 kv 到 py 的文本输入 - 导入数据

python - Dreamhost : Display or log console output? 上的 Django