ipywidgets,如何更改滑块的值显示精度

时间:2017-03-31 13:31:35

标签: python ipython jupyter ipywidgets

在jupyter中,我有以下代码使用ipywidgets为我的变量r创建一个滑块控件。

from ipywidgets import interact, interactive, fixed, interact_manual
import ipywidgets as widgets

r = 0.9992
def sl(r=0.9992):
    global ar
    ar = r

interact(sl, r=(0.999, 1, 0.0001))

它可以工作,但问题是滑块值的显示四舍五入到小数点后2位。结果,显示屏始终显示1.00。

enter image description here

有没有办法显示其实际价值?

3 个答案:

答案 0 :(得分:3)

从ipywidgets的6.x版本开始,FloatSlider包含readout_format属性。只需将其设置为所需的精度,例如像这样:

widgets.FloatSlider(value=7.5, min=0, max=10.0, 
                    step=0.001, readout_format='.3f')

答案 1 :(得分:0)

如果您的函数具有return值并且它显示您想要在下面的标签中看到的精度(如图像中),则您的代码可以正常工作

主要来自info @ http://test-widgets.readthedocs.io/en/latest/examples/Using%20Interact.html

from ipywidgets import *
from IPython.display import display

def SL(r):
    return r

interact(SL,r=widgets.FloatSlider(value=0.9992,min=0.9990,max=1.0000,step=0.0001,description='Precision:',))

the slider result with precision displayed below

答案 2 :(得分:0)

找到的解决方案here

值是以某种方式计算的,也许不可能用FloatSlider来实现。您可以使用SelectionSlider而不是Float。

my_values = [i / 1000 for i in range(10)]  # [0.001, 0.002, ...] Or use numpy to list

SelectionSlider(options=[("%g"%i,i) for i in my_values])

Widget