代码之家  ›  专栏  ›  技术社区  ›  joelostblom

在mouseup上触发事件,而不是继续使用panel slider小部件

  •  0
  • joelostblom  · 技术社区  · 5 年前

    函数如何监视 panel.widgets.IntSlider ,但只在释放鼠标时触发,而不是在拖动滑块时连续触发?

    我试过了 callback_policy='mouseup' 并用 @panel.depends(panel.widgets.IntSlider, watch=True) ,但当滑动条被拉过时,该功能将连续执行,而不仅仅是在释放鼠标按钮时。这是完整的代码:

    import panel as pn
    
    
    pn.extension()
    int_slider = pn.widgets.IntSlider(
        name='Integer Slider', end=5, callback_policy='mouseup')
    
    @pn.depends(int_slider.param.value, watch=True)
    def print_slider_value(slider_value):
        return slider_value
    
    pn.Column(int_slider, print_slider_value) #.app('localhost:8888')
    

    不管有没有我都试过了 .app() 最后,用“油门”代替“鼠标”,同样的结果。我正在JupyterLab笔记本上尝试这个,我已经安装了PyViz扩展。

    bokeh       1.2.0
    panel       0.6.0
    IPython     6.5.0
    jupyter_client  5.2.3
    jupyter_core    4.4.0
    jupyterlab  1.0.2
    notebook    5.6.0
    
    0 回复  |  直到 5 年前
        1
  •  1
  •   HYRY    5 年前

    我检查了 panel 发现它没有定义 value_throttled 财产。 要解决这个问题,您需要创建一个继承自 IntSlider 并添加 值已限制 财产。 那你就可以看着了 值已限制 .

    import panel as pn
    import param
    
    class IntThrottledSlider(pn.widgets.IntSlider):
        value_throttled = param.Integer(default=0)
    
    int_slider = IntThrottledSlider(
        name='Integer Slider', end=5, callback_policy='mouseup')
    
    @pn.depends(int_slider.param.value_throttled, watch=True)
    def print_slider_value(slider_value):
        return slider_value
    
    pn.Column(int_slider, print_slider_value)