2012-07-03 231 views
6

Tengo un lienzo de Tkinter con una barra de desplazamiento y algunos elementos que cuando los presiona, se supone que devuelve las coordenadas. (Usando Python.)Python, Tkinter: Cómo obtener coordenadas en un lienzo desplazable

Esto funciona bien con los objetos que inicialmente son visibles en la ventana. Sin embargo, cuando me desplazo hacia abajo y aparecen los elementos más abajo en el lienzo, no obtengo sus coordenadas de lienzo al hacer clic, pero la ventana se coordina.

No encuentro información sobre cómo obtener las coordenadas absolutas, entonces me pregunto si alguien aquí sabe cómo hacerlo.

Gracias.

Respuesta

6

Consulte la documentación del widget de lienzo here.

Para convertir de coordenadas de la ventana a la lona coordenadas, utilice los métodos canvasx y canvasy.

Aquí es una función de devolución de llamada de ejemplo que convierte x de la ventana y coordenadas y e imprime el elemento más cercano a esa posición a través de la 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) 
+0

Muchas gracias! – Yngve

+0

¡Me alegro de que haya sido útil! – gary

+0

Si la imagen es más pequeña que el lienzo, el método anterior me da las coordenadas absolutas del lienzo, y no las coordenadas de la imagen. ¿Hay alguna manera de que pueda obtener la imagen más pequeña para llenar el lienzo o cambiar el tamaño del lienzo para mostrar la imagen sin ningún borde? – varagrawal

Cuestiones relacionadas