Saltar a contenido

Coordenadas

Todo lo que pongamos en un Canvas, y en general, en una ventana, se sitúa en una posición que podemos establecer mediante unas coordenadas x, y.

La primera coordenada x se refiere a la distancia respecto al margen izquierdo, medida en pixels (puntos). La segunda coordenada y es la distancia vertical respecto al margen superior. El punto 0,0 es la esquina superior izquierda.

El siguiente programa muestra un Canvas y un texto en el margen inferior de la ventana. Cada vez que pulsamos sobre el Canvas con el ratón, en la barra inferior se muestran las coordenadas:

Coordenadas.py
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
import tkinter as tk

ventana = tk.Tk()
ventana.title("Obtener coordenadas")

lienzo= tk.Canvas(ventana)
lienzo.configure(width=1000)
lienzo.configure(height=600)
lienzo.configure(bg='AntiqueWhite')
lienzo.pack()

etiqueta=tk.Label(ventana)
etiqueta.configure(text="")
etiqueta.pack()

def mostrar_posicion(evento):
    x, y = evento.x, evento.y
    etiqueta.configure(text=f'{x}, {y}')

lienzo.bind('<Button>', mostrar_posicion)

ventana.mainloop()

El texto inferior es un objeto de la clase Label. Inicialmente muestra un texto en blanco:

etiqueta.configure(text="")

Todos los objetos pueden tener eventos. Ligamos el evento <Button> del objeto Canvas, que se genera cada vez que pulsamos con el ratón, a la ejecución de la función mostrar_posicion. Esta recibe información sobre el evento:

def mostrar_posicion(evento):

Esta variable evento recoge un objeto de la clase:

<class 'tkinter.Event'>

Tiene dos propiedades x,y con las coordenadas. Las mostramos cambiando el texto de la barra inferior:

etiqueta.configure(text=f'{x}, {y}')

La sentencia:

ventana.mainloop()

Se encarga de gestionar los eventos y llamar a las funciones que hemos asociado a los mismos.