我有以下代码
def update(val):
if val == 0:
value = s.val
ax1.cla()
ax1.plot_surface(x, y, rm, cmap = cm.coolwarm, linewidth = 0, antialiased = False)
elif val == 1:
value = s.val
ax1.cla()
ax1.plot_surface(x, y, rm1, cmap = cm.coolwarm, linewidth = 0, antialiased = False)
elif val == 2:
value = s.val
ax1.cla()
ax1.plot_surface(x, y, rm2, cmap = cm.coolwarm, linewidth = 0, antialiased = False)
ax1.set_zlim(-110, -80)
slider = wg.IntSlider(value=1, min=1, max=3, description='this is slider')
slideroutput = wg.Output()
display(slider, slideroutput)
def on_value_change(change):
with slideroutput:
print(change['new'])
slider.observe(on_value_change, names='value')
update(slideroutput)
plt.show()
如果update的输入是"i",则在update函数的定义中显示第i个3D图形,其中i= 1,2,3。
如何设计一个滑块,当我移动滑块的控制按钮时,滑块的输出是1、2或3,它们将成为“更新”的输入?
例如
update(slider_button)
谢谢!
发布于 2021-08-09 07:15:12
这就是您要查找的函数:
import ipywidgets as wg
slider = wg.IntSlider(value=1, min=1, max=3, description='this is slider')
slideroutput = wg.Output()
display(slider, slideroutput)
def on_value_change(change):
with slideroutput:
print(change['new'])
slider.observe(on_value_change, names='value')
但是,我强烈建议您寻找另一个替代方案(例如:下拉列表或按钮而不是滑块)。滑块使用.observe
。这会导致程序非常繁重,特别是在与3D绘图相关时。上面代码只是简单地打印命令,但是,您可以看到它运行起来并不流畅。你可以想象,如果与3D绘图链接,情况会有多糟糕。
-编辑
numberonslider = []
def on_value_change(change):
with slideroutput:
numberonslider.append(change['new'])
print(numberonslider[-1])
slider.observe(on_value_change, names='value')
https://stackoverflow.com/questions/68707475
复制相似问题