¿Los botones tienen su propio sistema de coordenadas de acuerdo con el método de “ubicación de cuadrícula”?

Estoy intentando usar el método grid_location , desde el Administrador de Geometría de Cuadrícula , en Tkinter, pero parece que estoy haciendo algo mal.

Aquí está mi código:

 from tkinter import * root = Tk() b=Button(root, text="00") b.grid(row=0, column=0) b2=Button(root, text="11") b2.grid(row=1, column=1) b3=Button(root, text="22") b3.grid(row=2, column=2) b4=Button(root, text="33") b4.grid(row=3, column=3) b5=Button(root, text="44") b5.grid(row=4, column=4) def mouse(event): print(event.x, event.y) print(root.grid_location(event.x, event.y)) root.bind("", mouse) root.mainloop() 

Cuando hago clic fuera de los botones, funciona, pero cuando hago clic dentro de cualquier botón, parece que cada botón tiene su propio sistema de coordenadas. Por lo tanto, cada botón está en la celda (0, 0), a pesar de que en el código, están en una cuadrícula regular.

Tienes razón en que cada botón “tiene su propio sistema de coordenadas”. Sin embargo, con más precisión, los valores event.x y event.y son relativos al widget asociado con el evento en lugar de a la ventana principal o la ventana raíz del widget.

Si realmente necesita la fila y la columna en la que se encuentra el widget, puede usar grid_info para obtener la fila y la columna del widget asociado con el evento. Por ejemplo:

 def mouse(event): grid_info = event.widget.grid_info() print("row:", grid_info["row"], "column:", grid_info["column"])