等待 python 2.7 中的 matplotlib 事件

Waiting for a matplotlib event in python 2.7

我在 Whosebug 上找到了这段代码并稍作修改。

import numpy as np
import matplotlib.pyplot as plt
import time

x = np.arange(-10,10)
y = x**2
x1 = 0

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)
plt.show()



def onclick(event):
    global x1, go
    x1 = event.xdata
    print x1
    fig.canvas.mpl_disconnect(cid)


cid = fig.canvas.mpl_connect('button_press_event', onclick)


print x1

我想知道如何stop/wait这个程序,直到我点击这个图。

因为正如我调用 mpl_connect 时写的那样,我可以点击该图,但我在点击步骤后立即获得输出 x1 = 0 而不是正确的值。

如何解决才能得到正确的值?

非常感谢,

卢卡

删除fig.canvas.mpl_disconnect(cid) 从点击。

Cid = fig.canvas.mpl_connect('button_press_event', onclick) 

事件与函数之间是否存在联系。它也应该在 plt 之前。展示()。

问题中提供的示例,几乎没问题。 show 语句应该在所有设置图形和连接回调函数的调用之后。此外,断开连接可能不是您想要的。

这是您的代码,经过编辑以重复生成图形和 运行 连接的函数。

#!/usr/bin/python

import numpy as np
import matplotlib.pyplot as plt
import time

x = np.arange(-10,10)
y = x**2
x1 = 0

fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)

def onclick(event):
    global x1, go
    x1 = event.xdata
    print x1

cid = fig.canvas.mpl_connect('button_press_event', onclick)

plt.show()