Python Tkinter和matplotlib:绑定到FigureCastKagg以提取光标在figure中的位置?
我想使用matplotlib绘制二维阵列,然后在单击绘制的图像时提取光标位置。下面是我将如何编写它的一个最简单的工作示例:Python Tkinter和matplotlib:绑定到FigureCastKagg以提取光标在figure中的位置?,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我想使用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)
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()
显然,当我使用FigureCanvasTKagg定义画布时,它不是一个小部件?提取图形中的光标位置需要什么结构
我对python中的GUI编程相当陌生,我认为我缺少一个非常基本的要点。我查阅了tkinter和matpotlib的参考手册,阅读了大量其他问题,但没有找到我的谬误 最好不要将
Canvas
用作变量名,因为它将隐藏tkinterCanvas
类。在问题中对其进行了更改,感谢您指出。还修复了一个输入错误,错误消息当然是关于bind,而不是pack(如前所述)在更改变量名后仍然会出现错误?@acw1668是的,在绑定中将“root”更改为“canvas_wid”时仍然会出现相同的错误。使用canvas_wid.get_tk_widget().bind(…)
相反。最好不要将Canvas
用作变量名,因为它将隐藏tkinterCanvas
类。在问题中更改了它,感谢您指出它。此外,还修复了一个输入错误,错误消息当然是关于bind,not pack(如前所述)在更改变量名后仍会出现错误?@acw1668是的,在绑定中将“root”更改为“canvas_wid”时仍会出现相同的错误。请改用canvas_wid.get_tk_widget().bind(…)
。
AttributeError: 'FigureCanvasTkAgg' object has no attribute 'bind'