クリックしたときにタッチイベントからの情報、つまりマウスの位置とクリックに使用されるマウスボタンを使用するボタンウィジェットをKivyで作成したいと考えています。
私が再実装するon_release
かon_press
、このようにすると:
from kivy.uix.button import Button
class myBtn(Button):
def on_release(touch=None):
print('Touch:', touch) # Touch: None (always)
Touch は常に None になります。再実装するon_touch_up
かon_touch_down
、タッチ情報にアクセスできる場合:
from kivy.uix.button import Button
class myBtn(Button):
def on_touch_up(touch=None):
print('Touch:', touch)
# Touch: <MouseMotionEvent spos=(..., ...) pos=(..., ...)
print('Button:', touch.button) # Button: left
このバージョンの問題は、マウス ボタンを離した後も、ボタンのプレス/リリース アニメーションが押されたように残ることです。また、関数が 1 回だけではなく 2 回呼び出されます。
関数で同じことを行うとon_touch_down
、関数は 1 回だけ実行されますが、クリックしてもボタンのアニメーションはまったく変化しません。
on_touch_down
とで見つかった問題を回避して、MouseMotionEvent を回復するにはどうすればよいon_touch_up
ですか?