2016-07-20 10 views
-1

私は、Webから次のコードを使用しています:理解kivyコードスニペット

from kivy.app import App 
from kivy.uix.widget import Widget 
from kivy.graphics import Line 


class DrawInput(Widget): 
    def on_touch_down(self, touch): 
     print(touch) 
     with self.canvas: 
      touch.ud["line"] = Line(points=(touch.x, touch.y)) 

    def on_touch_move(self, touch): 
     print(touch) 
     touch.ud["line"].points += (touch.x, touch.y) 

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


class SimpleKivy4(App): 
    def build(self): 
     return DrawInput() 


if __name__ == "__main__": 
    SimpleKivy4().run() 

はなぜこの方法は、それが明示的にどこにも呼び出されていない場合でも実装されますon_touch_down(self, touch)のでしょうか?

編集:タッチが発生したときに基づいてwidgetが発生した場合。次に、DrawInput()機能on_touch_downはどのように解雇されますか?原因クラスWidgetは、DrawInpout()クラスまたはそのいずれかのメソッドについてはわかりません。

+0

単純な継承です。 'DrawInput'クラスは、' on_touch_down'、 'on_touch_up'など、さまざまな事前定義されたメソッドを実行するためのロジックを含む' Widget'サブクラスです。 – MattDMo

答えて

0

あなたがオーバーライドするウィジェットクラスのメソッドであるため、呼び出されます。 これらは、ウィジェットのクリック/タッチにバインドされたイベントです。

on_touch_down:
は解雇既存のタッチが

を移動したとき:新しいタッチイベントが

on_touch_moveを発生したときに発生し
Widgetドキュメント

イベントからも

on_touch_up:
既存のタッチが消えたときに発動します。

関連する問題