我正在尝试做一个简单的按钮来将小部件“重置”为某些默认值。我@interact在 Jupyter Lab 环境中使用装饰器。问题是小部件标识符的值被复制到函数内用作浮点变量的相同标识符中,因此我无法再在这个新范围内访问它们。这是一个简短的示例(不起作用):
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact, Button
@interact(starts_at=(0, np.pi*0.9, np.pi*0.1), ends_at=(np.pi, 2*np.pi, np.pi*0.1))
def plot_graph(starts_at=0, ends_at=2*np.pi):
def on_button_clicked(_):
# instructions when clicking the button (this cannot work)
starts_at = 0
ends_at = 2*np.pi
button = Button(description="Reset")
button.on_click(on_button_clicked)
display(button)
f = lambda x : sum(1/a*np.sin(a*x + np.pi/a) for a in range(1,6))
x = np.linspace(0, 2*np.pi, 1000)
plt.plot(x, f(x))
plt.xlim([starts_at, ends_at])
有人知道如何将对原始小部件对象的引用发送到装饰函数的范围吗?我也将接受实现按钮以重置这些滑块的简单方法。
:-D
编辑:更正的文本流