Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tkinter和matplotlib:绑定到FigureCastKagg以提取光标在figure中的位置?_Python_Matplotlib_Tkinter - Fatal编程技术网

Python Tkinter和matplotlib:绑定到FigureCastKagg以提取光标在figure中的位置?

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)

我想使用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()
显然,当我使用FigureCanvasTKagg定义画布时,它不是一个小部件?提取图形中的光标位置需要什么结构


我对python中的GUI编程相当陌生,我认为我缺少一个非常基本的要点。我查阅了tkinter和matpotlib的参考手册,阅读了大量其他问题,但没有找到我的谬误

最好不要将
Canvas
用作变量名,因为它将隐藏tkinter
Canvas
类。在问题中对其进行了更改,感谢您指出。还修复了一个输入错误,错误消息当然是关于bind,而不是pack(如前所述)在更改变量名后仍然会出现错误?@acw1668是的,在绑定中将“root”更改为“canvas_wid”时仍然会出现相同的错误。使用
canvas_wid.get_tk_widget().bind(…)
相反。最好不要将
Canvas
用作变量名,因为它将隐藏tkinter
Canvas
类。在问题中更改了它,感谢您指出它。此外,还修复了一个输入错误,错误消息当然是关于bind,not pack(如前所述)在更改变量名后仍会出现错误?@acw1668是的,在绑定中将“root”更改为“canvas_wid”时仍会出现相同的错误。请改用
canvas_wid.get_tk_widget().bind(…)
AttributeError: 'FigureCanvasTkAgg' object has no attribute 'bind'