1

我在 StackOverflow 上找到了这段代码,并做了一些修改。

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

我想知道如何停止/等待程序,直到我单击该图。

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

如何解决它以获得正确的值?

太感谢了,

卢卡

4

2 回答 2

1

问题中提供的示例几乎可以。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()
于 2018-08-15T17:17:44.493 回答
0

fig.canvas.mpl_disconnect(cid) 从 onclick删除。

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

做事件和函数之间的连接。它也应该在 plt. 节目()。

于 2018-08-15T17:07:50.740 回答