Kivy on_press против on_touch_down - PullRequest
0 голосов
/ 24 октября 2018

У меня есть число в метке 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 голосов
/ 24 октября 2018

on_touch_down запускает все в дереве виджетов.Ваши кнопки отменяли друг друга.

Если бы ваши кнопки делали что-то еще, что-то, что не отменяло друг друга, то вы увидите, как оба действия сработали.Например, если на одной кнопке напечатано «привет», а на другой - «мир», то нажатие на кнопку, которая, кажется, не работает, напечатает «привет мир».

...