Kivy on_press与on_touch_down

时间:2018-10-24 17:48:17

标签: python python-3.x kivy kivy-language

我在Kivy标签上有一个数字和2个按钮,一个按钮增加该数字,一个按钮减少该数字。我很惊讶地发现使用on_touch_down时+按钮不起作用。我注释掉-按钮,然后+按钮开始起作用。

我将on_touch_down更改为on_press,并且两个按钮均和谐存在/起作用。

有人可以告诉我为什么吗?

这是一个.py文件示例:

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout


class Counter(BoxLayout):

    def count_up(self):
        value = self.ids.the_number.text
        self.ids.the_number.text = str(int(value) + 1)

    def count_down(self):
        value = self.ids.the_number.text
        self.ids.the_number.text = str(int(value) - 1)


class ProofApp(App):
    def build(self):
        return Counter()


if __name__ == '__main__':
    ProofApp().run()

和.kv文件:

<Counter>:
    AnchorLayout:
        anchor_x: 'center'
        anchor_y: 'top'

        BoxLayout:
            orientation: 'horizontal'

            BoxLayout:

                Label:
                    id: the_number
                    text: "1"

            BoxLayout:
                orientation: 'vertical'
                padding: 2

                Button:
                    id: count_up
                    text: "+"
                    on_press: root.count_up()

                Button:
                    id: count_down
                    text: "-"
                    on_press: root.count_down()

1 个答案:

答案 0 :(得分:1)

on_touch_down会触发小部件树中的所有内容。您的按钮互相抵消了。

如果您的按钮正在执行其他操作,而这些操作并未彼此抵消,那么您将看到两个动作均触发。例如,如果一个按钮打印“ hello”,而一个按钮打印“ world”,然后按一下似乎无效的按钮,则会打印“ hello world”。