Python, Tkinter: как получить координаты на прокручиваемом холсте

У меня есть холст Tkinter с полосой прокрутки и некоторые элементы, которые, когда я нажимаю на них, он должен возвращать координаты. (С Использованием Python.)

Это прекрасно работает с объектами, которые изначально видны в окне. Однако, когда я прокручиваю вниз, и элементы дальше на холсте появляются в поле зрения, я не получаю их координаты холста при нажатии, а координаты окна.

Я не могу найти информацию о том, как получить абсолютные координаты, так что я интересно, знает ли кто-нибудь здесь, как это сделать?

спасибо.

1 ответов


проверьте документацию для виджета canvas здесь.

чтобы преобразовать координаты окна в координаты холста, используйте canvasx и canvasy методы.

вот пример функции обратного вызова, которая преобразует координаты X и y окна и печатает элемент, ближайший к этой позиции через find_closest() метод.

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