有没有办法将画布坐标转换为 Tkinter 中的窗口坐标?
这与将窗口坐标转换为画布坐标相反,它是这样完成的:
x = canvas.canvasx(event.x)
有没有办法将画布坐标转换为 Tkinter 中的窗口坐标?
这与将窗口坐标转换为画布坐标相反,它是这样完成的:
x = canvas.canvasx(event.x)
使用canvasx
andcanvasy
方法,参数为零,计算可见画布左上角的 x/y。然后只需使用数学将画布坐标转换为相对于窗口的坐标。
# 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 将为零。您提供的任何画布坐标都将与窗口坐标相同(即:0,0 的画布 x/y 将对应于窗口坐标 0,0)。
如果您向下和向右滚动了 100 个像素,则 100,100 的画布坐标将转换为 0,0 的窗口坐标,因为这是位于窗口左上角的像素。
这为您提供了一个相对于画布左上角的值。如果你需要这个相对于整个窗口的左上角,使用winfo_x
andwinfo_y
来获取画布相对于窗口的坐标并做更多的数学运算。或者,使用winfo_rootx
和winfo_rooty
获取小部件相对于屏幕的坐标。