Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从按钮按下事件matplotlib返回值?_Python_Matplotlib - Fatal编程技术网

Python 如何从按钮按下事件matplotlib返回值?

Python 如何从按钮按下事件matplotlib返回值?,python,matplotlib,Python,Matplotlib,我是新来的,python和matplotlib也是新来的 我想创建一个代码,允许我从函数define中获取坐标(event.xdata),以便以后使用该数据。但是,正如我到目前为止所读到的,一些变量是局部变量(函数内部的变量),而另一些是全局变量(我们想在“以后”使用的变量)。我尝试了“全局”选项,我也读到它不是最好的,但它不起作用。。。当然,解决方案可能是从定义的拾取函数返回值。。。问题是我必须创建一个变量,它接收函数的返回。。。但由于这是一个事件(不是一个简单的函数),我不能要求一个变量接收

我是新来的,python和matplotlib也是新来的

我想创建一个代码,允许我从函数define中获取坐标(event.xdata),以便以后使用该数据。但是,正如我到目前为止所读到的,一些变量是局部变量(函数内部的变量),而另一些是全局变量(我们想在“以后”使用的变量)。我尝试了“全局”选项,我也读到它不是最好的,但它不起作用。。。当然,解决方案可能是从定义的拾取函数返回值。。。问题是我必须创建一个变量,它接收函数的返回。。。但由于这是一个事件(不是一个简单的函数),我不能要求一个变量接收返回,因为这是一个在绘图之后发生的事件。可能(?)应该类似于:

import matplotlib.pyplot as plt
import numpy as np

asd = () #<---- i need to create a global variable before i can return a value in it? 
fig = plt.figure()
def on_key(event):
    print('you pressed', event.key, event.xdata, event.ydata)
    N=event.xdata
    return N in asd #<---- i want to return N into asd

cid = fig.canvas.mpl_connect('key_press_event', on_key)
lines, = plt.plot([1,2,3])
NAAN=on_key(event) #<---- just to try if return alone worked... but on_key is a function which happens in the plot event... so no way to take the info from the return
plt.show()
导入matplotlib.pyplot作为plt
将numpy作为np导入

asd=()#您可以使用可变对象和闭包来实现这一点:

mutable_object = {} 
fig = plt.figure()
def on_key(event):
    print('you pressed', event.key, event.xdata, event.ydata)
    N=event.xdata
    mutable_object['key'] = N
然后,您可以使用

N = mutable_object['key']
使用此功能,您还可以通过
列表
附加
来执行此操作,或者创建自己的类,等等