2011-10-18 34 views

答えて

6

可視のキャンバスの左上隅のx/yを計算するには、引数を0にしてcanvasxcanvasyのメソッドを使用します。次に、数学を使ってキャンバスの座標をウィンドウに対して相対的なものに変換します。例えば

# upper left corner of the visible region 
x0 = self.canvas.canvasx(0) 
y0 = self.canvas.canvasy(0) 

# given a canvas coordinate cx/cy, convert it to window coordinates: 
wx0 = cx-x0 
wy0 = cy-y0 

キャンバスがスクロールされた場合、上部と左、X0及びY0へのすべての方法は、ゼロとなります。キャンバス座標は、ウィンドウ座標と同じになります(キャンバスx/y = 0,0はウィンドウ座標0,0に対応します)。

右下に100ピクセルスクロールした場合、キャンバス座標100,100はウィンドウの左上隅にあるピクセルなので、ウィンドウ座標は0,0に変換されます。

これは、キャンバスの左上隅を基準にした値です。これをウィンドウ全体の左上隅に相対的に指定する必要がある場合は、winfo_xwinfo_yを使用して、キャンバスの座標をウィンドウに対して相対的に計算し、もう少し計算します。または、winfo_rootxwinfo_rootyを使用して、画面に対するウィジェットの座標を取得します。

+0

私は答えを理解できなかったのか、自分自身を明確にしなかったのか分かりません。私はキャンバスがスクロール可能なので、キャンバス内部のもの(たとえば、キャンバスイメージアイテム)の座標を知る方法を、ウィンドウ座標の形で知りたい。 –

+0

@マルス:私の悪い。あなたが求めていることを完全に理解することなく、私は急いで答えました。うまくいけば私は今より良い答えを与えました。 –

関連する問題