4
有没有办法将画布坐标转换为Tkinter中的窗口坐标?预先Python Tkinter将画布坐标转换为窗口坐标
x = canvas.canvasx(event.x)
感谢:
这将是从窗口转换为画布坐标的相反,至极像这样做。
有没有办法将画布坐标转换为Tkinter中的窗口坐标?预先Python Tkinter将画布坐标转换为窗口坐标
x = canvas.canvasx(event.x)
感谢:
这将是从窗口转换为画布坐标的相反,至极像这样做。
使用canvasx
和canvasy
方法,给出一个零参数来计算可见画布左上角的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
和winfo_y
来获取画布相对于窗口的坐标并进行更多的数学计算。或者,使用winfo_rootx
和winfo_rooty
来获取小部件相对于屏幕的坐标。
我不知道我是否不明白答案,或者如果我没有说清楚。我想要一种方法来了解画布内部的坐标(例如,画布图像项),但是以窗口坐标的形式,因为我的画布是可滚动的。 –
@Marcos:我的不好。我没有完全理解你所问的问题而匆忙地回答。希望我现在给出了更好的答案。 –