ventanas tutorial interfaz instalar hijas grafica entry ejemplos python user-interface tkinter tkinter-canvas

python - tutorial - ¿Cómo puedo adjuntar enlaces de eventos a elementos en un lienzo usando Tkinter?



tkinter tutorial (1)

Si utilizo un lienzo para mostrar datos y quiero que el usuario pueda hacer clic en varios elementos del lienzo para obtener más información o interactuar con ella de alguna manera, ¿cuál es la mejor manera de hacerlo?

Buscando en línea, puedo encontrar información sobre cómo vincular eventos a etiquetas, pero eso parece ser más indirecto que lo que quiero. No quiero agrupar elementos con etiquetas, sino tener llamadas a funciones específicas cuando el usuario hace clic en elementos específicos en el lienzo.


Para interactuar con objetos contenidos en un objeto Canvas, necesita usar tag_bind () que tenga este formato: tag_bind(item, event=None, callback, add=None)

El parámetro del elemento puede ser una etiqueta o una identificación.

Aquí hay un ejemplo para ilustrar el concepto:

from tkinter import * def onObjectClick(event): print(''Got object click'', event.x, event.y) print(event.widget.find_closest(event.x, event.y)) root = Tk() canv = Canvas(root, width=100, height=100) obj1Id = canv.create_line(0, 30, 100, 30, width=5, tags="obj1Tag") obj2Id = canv.create_text(50, 70, text=''Click'', tags=''obj2Tag'') canv.tag_bind(obj1Id, ''<ButtonPress-1>'', onObjectClick) canv.tag_bind(''obj2Tag'', ''<ButtonPress-1>'', onObjectClick) print(''obj1Id: '', obj1Id) print(''obj2Id: '', obj2Id) canv.pack() root.mainloop()