2024-07-05 08:58:25 发布
网友
有没有办法把画布坐标转换成Tkinter中的窗口坐标?
这与从窗口到画布坐标的转换相反,其操作如下:
x = canvas.canvasx(event.x)
使用参数为零的canvasx和canvasy方法计算可见画布左上角的x/y。然后使用数学将画布坐标转换为与窗口相关的坐标。
canvasx
canvasy
# 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个像素,则画布坐标100100将转换为窗口坐标0,0,因为这是窗口左上角的像素。
这将为您提供一个相对于画布左上角的值。如果需要相对于整个窗口的左上角执行此操作,请使用winfo_x和winfo_y获取画布相对于窗口的坐标,并进行更多的计算。或者,使用winfo_rootx和winfo_rooty获取小部件相对于屏幕的坐标。
winfo_x
winfo_y
winfo_rootx
winfo_rooty
使用参数为零的
canvasx
和canvasy
方法计算可见画布左上角的x/y。然后使用数学将画布坐标转换为与窗口相关的坐标。例如,如果画布一直滚动到顶部和左侧,x0和y0将为零。您提供的任何画布坐标都将与窗口坐标相同(即:画布x/y为0,0将对应于窗口坐标0,0)。
如果您向下和向右滚动了100个像素,则画布坐标100100将转换为窗口坐标0,0,因为这是窗口左上角的像素。
这将为您提供一个相对于画布左上角的值。如果需要相对于整个窗口的左上角执行此操作,请使用
winfo_x
和winfo_y
获取画布相对于窗口的坐标,并进行更多的计算。或者,使用winfo_rootx
和winfo_rooty
获取小部件相对于屏幕的坐标。相关问题 更多 >
编程相关推荐