Я хочу построить 2d-массив с помощью matplotlib, а затем извлечь позицию курсора, когда я нажимаю на построенное изображение. Вот минимальный рабочий пример того, как я бы это написал:
from tkinter import *
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib import pyplot as plt
def callback(event):
print ("clicked at", event.x, event.y)
root = Tk()
mf = Frame()
figure = plt.Figure()
axes = figure.add_subplot(111)
canvas_wid = FigureCanvasTkAgg(figure, master=mf)
canvas_wid.get_tk_widget().pack()
root.bind("<Button-1>", callback)
mf.pack()
root.mainloop()
Однако я не хочу иметь координаты относительно root, а в пределах рисунка . Когда я привязываю щелчок к mf, программа запускается, но щелчок не вызывает никакого ответа. Когда я привязываю его к виджету Canvas - что, насколько я понимаю, было бы именно тем, что я хочу, я получаю следующее сообщение об ошибке:
AttributeError: 'FigureCanvasTkAgg' object has no attribute 'bind'
По-видимому, Canvas не является виджетом, когда я определяю его с помощью FigureCanvasTKagg? Какая структура необходима для извлечения позиции курсора внутри фигуры?
Я новичок в программировании GUI в python и полагаю, что мне не хватает очень простой точки c. Я проверил справочное руководство для tkinter и matpotlib, прочитал много других вопросов, но не смог найти свою ошибку.