Python,Tkinter:如何在可滚动画布上获取坐标

Posted

技术标签:

【中文标题】Python,Tkinter:如何在可滚动画布上获取坐标【英文标题】:Python, Tkinter: How to get coordinates on scrollable canvas 【发布时间】:2012-07-03 14:13:34 【问题描述】:

我有一个带有滚动条的 Tkinter 画布,还有一些项目,当我单击它们时,它应该返回坐标。 (使用 Python。)

这适用于最初在窗口中可见的对象。但是,当我向下滚动并且画布上更下方的项目进入视图时,单击时我没有得到它们的画布坐标,而是窗口坐标。

我找不到有关如何获取绝对坐标的信息,所以我想知道这里有没有人知道怎么做?

谢谢。

【问题讨论】:

【参考方案1】:

查看画布小部件here 的文档。

要将窗口坐标转换为画布坐标,请使用canvasxcanvasy 方法。

这是一个示例回调函数,它转换窗口的 x 和 y 坐标并通过 find_closest() method 打印最接近该位置的项目。

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

【讨论】:

如果图像比画布小,那么上面的方法给我的是画布的绝对坐标,而不是图像的坐标。有什么办法可以让较小的图像填充画布或调整画布大小以显示没有任何边框的图像?

以上是关于Python,Tkinter:如何在可滚动画布上获取坐标的主要内容,如果未能解决你的问题,请参考以下文章

带有网格的 tkinter 画布滚动条?

tkinter:在画布上使用滚动条

tkinter - 加权画布不填充空白空间

Tkinter列表框和画布不会一起滚动

如何让 Matplotlib 图形在 Tkinter GUI 中正确滚动+调整大小

使用 Tkinter 和 Python 在 Mac OS X 中进行惯性滚动