我正在尝试将具有特定名称的文件保存为matplotlib中的on_key_press
事件。
这是我的代码,遵循matplotlib图:
save_name = 'folder_name/' + file_name[12:-5]
def save_figure(event, save_name):
if event.key == 'w':
plt.savefig(save_name)
fig.canvas.mpl_connect('key_press_event', save_figure(save_name))
但是当我运行此代码时,我收到以下错误:
TypeError: save_figure() missing 1 required positional argument: 'save_name'
我不知道如何将save_name
变量传递给save_figure
函数。
答案 0 :(得分:1)
save_name = 'folder_name/' + file_name[12:-5]
def save_figure(event):
if event.key == 'w':
plt.savefig(save_name)
fig.canvas.mpl_connect('key_press_event', save_figure)
函数可以访问外部作用域中的变量,因此save_figure
已经可以访问save_name
,至少在您的示例代码中是这样。
答案 1 :(得分:1)
您通过save_name
作为event
参数。 save_figure
需要2个参数。你对save_figure()
的召唤只有一个论点。论证的顺序也很重要。所以当你打电话给save_figure
时,它需要看起来像:
save_figure(event,save_name)
答案 2 :(得分:1)
在不改变现有功能的情况下,这类问题通常采用的方法是使用匿名函数。
fig.canvas.mpl_connect('key_press_event', lambda event: save_figure(event,save_name))