1

ボタンを離したときにon_touch_upが起動される理由がわかりません。他の2つのイベント、on_touch_downとon_touch_moveは発生しません。

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button


class MyPaintWidget(Widget):

    def on_touch_down(self, touch):
        print "on_touch_down"

    def on_touch_move(self, touch):
        print "on_touch_move"

    def on_touch_up(self, touch):
        print "on_touch_up"


class MyPaintApp(App):

    def build(self):
        parent = Widget()

        painter = MyPaintWidget()
        btn = Button(text='Click Me')

        parent.add_widget(painter)
        parent.add_widget(btn)

        return parent

if __name__ == '__main__':
    MyPaintApp().run()
4

1 に答える 1

3

MyPainterWidget の up、down、および move メソッドをオーバーロードし、ウィジェットをクリックすると定義どおりに実行されます。

uix.Button には on_touch_up メソッドがないため、イベントはウィジェット ツリーに伝播します。の順序を変更することで、これをもう少し詳しく調べることができます。

parent.add_widget(painter)
parent.add_widget(btn)

parent.add_widget(btn)
parent.add_widget(painter)

「on_touch_up」だけでなく、uix.Button をクリックしても、「on_touch_up」と「on_touch_down」の両方がコンソールに出力されることがわかります。

これらはkivyがイベントを処理する方法の側面であり、詳細はここで見つけることができます

于 2012-12-11T17:07:06.173 に答える