在tkinter内,我想绘制点,然后单击其中之一以获取更多信息。当前状态:我单击一个点,event.ind给我该点的索引。稍后使用此信息,我将加载该信息。
由于我需要通过onpick传递信息,因此我使用了lambda函数。到目前为止,它仍然有效。但是,当我第二次绘制并单击一个点后,我得到了event.ind信息,第二行打印了两次。在绘制3次之后,我获得了event.ind信息3次,依此类推。如果我不使用lambda函数,那么一切都可以正常工作,即多次绘图和仅一次event.ind。这是三个函数的代码:
def create_graph(diag_root):
fig = plt.figure(figsize=(5, 4), dpi=120)
diag_canvas = FigureCanvasTkAgg(fig, master=diag_root)
diag_canvas.get_tk_widget().grid(row = 1, column = 0)
return(fig)
def plot_graph(graph_figure):
graph_figure.clear()
ax = graph_figure.add_subplot(111)
x = [1, 2, 3, 4]
y = [1, 4, 9, 16]
plt.plot(x, y, 'ro', picker = 5)
graph_figure.canvas.mpl_connect('pick_event', lambda event: onpick(event, 'test'))
graph_figure.canvas.draw()
def onpick(event, string):
ind = self.ind[0]
print(ind)
有什么主意吗?
感谢Tuvok