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()