Python 3.x Python-Spyder忽略启用选择器的绘图

Python 3.x Python-Spyder忽略启用选择器的绘图,python-3.x,mouseevent,spyder,Python 3.x,Mouseevent,Spyder,我正在用Spyder(Python 3.5)编写这个脚本,我希望它能做到这一点: 1) 策划某事 2) 请允许我从绘图中选取一些值 3) 将这些值存储到变量中 4) 用这个变量做点什么 我已经检查了这个线程:并为我自己的代码修改了这里的函数。我的问题是spyder似乎忽略了交互式绘图,并立即运行整个脚本,而不等待我从绘图中选择任何值。当我使用这些值进行进一步的计算时,我显然从中得到了一个错误。我甚至尝试在绘图后设置一个输入(“按enter键继续…”),看看它是否使绘图停止并等待我的拾取,但它也不

我正在用Spyder(Python 3.5)编写这个脚本,我希望它能做到这一点: 1) 策划某事 2) 请允许我从绘图中选取一些值 3) 将这些值存储到变量中 4) 用这个变量做点什么

我已经检查了这个线程:并为我自己的代码修改了这里的函数。我的问题是spyder似乎忽略了交互式绘图,并立即运行整个脚本,而不等待我从绘图中选择任何值。当我使用这些值进行进一步的计算时,我显然从中得到了一个错误。我甚至尝试在绘图后设置一个输入(“按enter键继续…”),看看它是否使绘图停止并等待我的拾取,但它也不起作用。 当我一步一步地运行脚本时,它工作得很好,我得到绘图,选择我的值,打印变量并在其中找到所有变量,然后使用它们。所以问题是:当我运行整个脚本时,如何使它工作

这是我的密码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import plot as plot

def onpick(event):

    ymouse = event.ydata

    print ('y of mouse: {:.2f}'.format(ymouse))

    times.append(ymouse)

    if len(times)==5:
        f.canvas.mpl_disconnect(cid)

    return times
#

t=np.arange(1000)
y=t**3

f=plt.figure(1)
ax=plt.gca()

ax.plot(t,y,picker=5)

times=[]
cid=f.canvas.mpl_connect('button_press_event',onpick)

plt.show()

#Now do something with times
mtimes=np.mean(times)
print(mtimes)
(这里是Spyder维护人员)我认为要解决这个问题,您需要转到

首选项>IPython控制台>图形

并关闭名为“激活支持”的选项。这将使您的脚本在绘图运行时阻止控制台,因此您可以捕获所需的鼠标单击

唯一的问题是你需要跑步

In [1]: %matplotlib qt5
在开始运行代码之前,因为Spyder不再为您这样做了