onpick lambda多次争论

时间:2018-08-22 16:52:41

标签: lambda

在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

0 个答案:

没有答案