在 mouseup 上触发事件,而不是使用面板滑块小部件连续触发事件
Trigger event on mouseup instead of continuosly with panel slider widget
函数如何监视 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()
以及使用 'throttle' 而不是 'mouseup',结果相同。我正在 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
我查看了panel
的源代码,发现它没有定义value_throttled
属性。
要解决这个问题,您需要创建一个继承自 IntSlider
的 class 并添加 value_throttled
属性。
然后你可以在 value_throttled
.
上观看
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)
函数如何监视 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()
以及使用 'throttle' 而不是 'mouseup',结果相同。我正在 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
我查看了panel
的源代码,发现它没有定义value_throttled
属性。
要解决这个问题,您需要创建一个继承自 IntSlider
的 class 并添加 value_throttled
属性。
然后你可以在 value_throttled
.
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)