浮动画布上的光标坐标

时间:2019-02-02 13:25:54

标签: python python-3.x tkinter tkinter-canvas

我希望获取画布中光标的x和y坐标,以便坐标取决于光标在画布上的位置而不是屏幕上的位置。

这是我当前的测试代码:

from tkinter import *

root = Tk()
canvas = Canvas(root,width=300 ,height=300 ,background = 'gray')
canvas.pack()

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


canvas.bind('<Motion>',mouseMove)
root.mainloop()

现在,例如,如果我将光标放在画布的右上角,而画布在屏幕的右上角,则我得到的值接近0,0。 现在,如果我将光标放在画布的同一部分上,但画布在屏幕的底部,则得到的值约为1000,700。 无论画布在哪里,我如何使它保持在光标右上角的0,0上?

1 个答案:

答案 0 :(得分:0)

据我所知,您发布的代码不是您正在运行的代码,因为它不会产生您描述的输出。在更正错误时,要假设输出的内容看起来像我提出的以下内容:

from tkinter import *

root = Tk()
canvas = Canvas(root, width=300, height=300, background='gray')
canvas.pack()

def mouseMove(event):
    canvas = event.widget
    x = canvas.canvasx(event.x)
    y = canvas.canvasy(event.y)
    print(x, y)

canvas.bind('<Motion>',mouseMove)
root.mainloop()

几乎与您发布的代码相同,但返回所需的输出。我在Windows 10下运行Python 3.6.5。