Python - 设计一个滑块来控制一个函数的输入

Python - design a slider to control the input of a function

我有以下代码

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()

如果更新的输入是“i”,则显示更新函数定义中的第i个3D图形,其中i = 1,2,3。

如何设计一个滑块,当我移动滑块的控制按钮时,滑块的输出为1、2或3,将成为“更新”的输入?

例如

update(slider_button)

谢谢!

这是您正在寻找的功能:

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 plot联动那该有多惨

---编辑---

numberonslider = []
def on_value_change(change):
    
    with slideroutput:
        numberonslider.append(change['new'])
        print(numberonslider[-1])
slider.observe(on_value_change, names='value')