2012-07-03 121 views
6

私はスクロールバーを持つTkinterキャンバスと、クリックすると座標を返すことになっているアイテムがあります。 (Pythonの使用)Python、Tkinter:スクロールキャンバスで座標を取得する方法

これは、最初にウィンドウに表示されているオブジェクトで正常に動作します。しかし、私が下にスクロールすると、キャンバスの上にある項目が表示されますが、クリックするとそのキャンバスの座標は取得されませんが、ウィンドウの座標は変化します。

絶対座標を取得する方法についての情報が見つかりません。そのため、ここで誰かがそれを行う方法を知っているのでしょうか?

ありがとうございました。

答えて

6

キャンバスウィジェットhereのドキュメントをご覧ください。

ウィンドウ座標をキャンバス座標に変換するには、canvasxおよびcanvasyメソッドを使用します。ここ

find_closest()methodを介してその位置に最も近い項目を、ウィンドウのx、y座標を変換して印刷する例のコールバック関数です。

def callback(event): 
    canvas = event.widget 
    x = canvas.canvasx(event.x) 
    y = canvas.canvasy(event.y) 
    print canvas.find_closest(x, y) 
+0

ありがとうございました! – Yngve

+0

うれしかった! – gary

+0

画像がキャンバスよりも小さい場合は、上記の方法で画像の座標ではなく絶対キャンバスの座標が得られます。小さな画像をキャンバスに塗りつぶしたり、キャンバスのサイズを変更して枠線なしで画像を表示する方法はありますか? – varagrawal

関連する問題