Python
 Computer >> コンピューター >  >> プログラミング >> Python

Tkinterでスクロール可能なキャンバスの座標を取得するにはどうすればよいですか?


キャンバスウィジェットには、(a)ウィンドウ座標系と(b)キャンバス座標系の2つの座標系があります。ウィンドウの座標系は常にウィンドウの左端(0,0)から始まりますが、キャンバスの座標系はアイテムが実際にキャンバスのどこに配置されるかを指定します。

ウィンドウ座標系をキャンバス座標系に変換するには、次の2つの方法を使用できます。

canvasx(event.x)
canvas(event.y)

ウィンドウ座標系の場合を考えると、マウスイベントはウィンドウ座標系でのみ発生します。ウィンドウ座標をキャンバス座標系に変換できます。

このアプリケーションでは、キャンバスウィジェット内のマウスポインタの位置を取得します。

# Import the required libraries
from tkinter import *

# Create an instance of tkinter frame or window
win = Tk()

# Set the size of the window
win.geometry("700x350")

# Create a canvas widget
canvas = Canvas(win)
canvas.pack()

def on_button_pressed(event):
   start_x = canvas.canvasx(event.x)
   start_y = canvas.canvasy(event.y)
   print("start_x, start_y =", start_x, start_y)

def on_button_motion(event):
   end_x = canvas.canvasx(event.x)
   end_y = canvas.canvasy(event.y)
   print("end_x, end_y=", end_x, end_y)

# Bind the canvas with Mouse buttons
canvas.bind("<Button-1>", on_button_pressed)
canvas.bind("<Button1-Motion>", on_button_motion)

# Add a Label widget in the window
Label(win, text="Move the Mouse Pointer and click " "anywhere on the Canvas").pack()

win.mainloop()

出力

上記のコードを実行すると、ウィンドウが表示されます。

Tkinterでスクロール可能なキャンバスの座標を取得するにはどうすればよいですか?

マウスポインタを移動してキャンバス上の任意の場所をクリックすると、コンソールにポインタの相対座標が出力されます。

start_x, start_y = 340.0 159.0

  1. Tkinterウィジェットの現在のx座標とy座標を取得するにはどうすればよいですか?

    Tkinterは、GUIベースのアプリケーションを作成するために広く使用されています。特定のアプリケーションのさまざまな属性を定義するために使用できる多くのツールキットと機能またはモジュールがあります。 GUIアプリケーションを構築するために、ボタン、テキストボックス、ラベルなどのウィジェットを提供します。他の関数やライブラリを使用して、tkinterフレーム上のウィジェットの位置とその座標をカスタマイズできます。 tkinterフレーム内で何らかの位置にあるテキストラベルウィジェットを作成したとしましょう。これで、ウィジェットの実際の座標を取得するために、ジオメトリを使用できます。 tki

  2. キャンバスで画像を中央に配置する方法PythonTkinter

    Tkinterを使用してGUIベースのアプリケーションを作成していて、Tkinterキャンバスに画像をロードしたいとします。 デフォルトでは、キャンバスはその幅と高さに応じて画像をロードしますが、「方向」を渡すことで、画像の位置を任意の方向(N、S、E、W、NS、EWなど)に操作できます。アンカーパラメータの値。アンカーは、画像関数とともに呼び出されるパラメータです。キャンバス内の画像の方向または位置を定義します。 アンカーパラメータを使用することで、テキストと画像を任意の方向に揃えることができます。今のところ、ラベルを使用して画像ラベルを作成します そのような機能、 Label(root