Start_python’s diary

ふたり暮らし

アラフィフ夫婦のフリーランスプラン

Kivy 特定のウェジットだけでon_touch_downを使う(Python クリックした座標を取り出す)

はじめに

クリックした座標を取りたくて「on_touch_down」を利用したらボタンが押せなくなりました。その時に使った対処法です。

 

def on_touch_down(self, touch):
    print(touch.pos)

これだとマウスをクリックした座標は取れますが、ほかの操作(ボタンを押す)が効かなくなります。

 

解決策(例)

kvファイルで「on_touch_down:」の行を追加して

BoxLayout:
    orientation: "vertical"
    Image:
        id: image1
        size_hint_y: 10
        texture: root.image_texture
        on_touch_down: root.on_image1_down(args[1])

メインプログラムを変更します。

def on_image1_down(self, touch):
    print(touch.pos)

 

解説

「args[1]」が「on_touch_down」の引数「touch」と同じになります。ちなみに「touch.pos」が絶対座標でレイアウト全体からみた座標です。

 

まとめ

クリックした座標を原点に正方形を描画してみました。

f:id:Start_python:20200111092629g:plain

 

次回は正方形を消す方法を調べてみます。