gpt4 book ai didi

python - 如何将 Tkinter Canvas 坐标转换为窗口?

转载 作者:太空狗 更新时间:2023-10-29 21:35:25 27 4
gpt4 key购买 nike

有没有办法在 Tkinter 中将 Canvas 坐标转换为窗口坐标?

这与从窗口坐标转换为 Canvas 坐标相反,它是这样完成的:

x = canvas.canvasx(event.x)

最佳答案

使用 canvasxcanvasy 方法,给定参数零,计算可见 Canvas 左上角的 x/y。然后只需使用数学将 Canvas 坐标转换为相对于窗口的坐标即可。

# 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

例如,如果 Canvas 一直滚动到顶部和左侧,则 x0 和 y0 将为零。您提供的任何 Canvas 坐标都将与窗口坐标相同(即:0,0 的 Canvas x/y 将对应于窗口坐标 0,0)。

如果您向下和向右滚动 100 像素, Canvas 坐标 100,100 将转换为窗口坐标 0,0,因为这是窗口左上角的像素。

这会为您提供一个相对于 Canvas 左上角的值。如果您需要相对于整个窗口左上角的坐标,请使用 winfo_xwinfo_y 获取 Canvas 相对于窗口的坐标并进行更多数学计算.或者,使用 winfo_rootxwinfo_rooty 获取小部件相对于屏幕的坐标。

关于python - 如何将 Tkinter Canvas 坐标转换为窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7811263/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com