32

マウスの位置を取得して変数として設定する方法はありますか?

4

4 に答える 4

43

<Motion>イベントに反応するコールバックを設定できます。

import Tkinter as tk
root = tk.Tk()

def motion(event):
    x, y = event.x, event.y
    print('{}, {}'.format(x, y))

root.bind('<Motion>', motion)
root.mainloop()

必要な変数の種類がわかりません。上記では、ローカル変数xyマウス座標を設定しました。

クラスメソッドを作成motionすると、インスタンス属性self.xself.yマウス座標に設定でき、他のクラスメソッドからアクセスできるようになります。

于 2014-04-08T00:53:36.697 に答える
41

いつでもメソッドwinfo_pointerxを使用winfo_pointeryして、ルート ウィンドウを基準とした x、y 座標を取得できます。それを絶対スクリーン座標に変換するには、winfo_pointerxまたはを取得し、そこからそれぞれのまたはwinfo_pointeryを引きます。winfo_rootxwinfo_rooty

例えば:

root = tk.Tk()
...
x = root.winfo_pointerx()
y = root.winfo_pointery()
abs_coord_x = root.winfo_pointerx() - root.winfo_rootx()
abs_coord_y = root.winfo_pointery() - root.winfo_rooty()
于 2014-04-08T16:45:38.050 に答える