jupyter-notebook - 每次更新 ipywidgets 时更新显示值

标签 jupyter-notebook ipython ipywidgets

在我的笔记本中,我有 7 个 FloatSlider 小部件。我希望这 7 个小部件的产品始终以一种方式显示,当用户移动滑块时,显示的值会更新。目前我正在尝试在 Widgets.Text (n) 中显示 SliderWidgets 的产品,但我不确定它是否是最佳解决方案。

 import ipywidgets as widgets

caption = widgets.Label(value='Play around with the variables to see how N changes!')   

r = widgets.FloatSlider(value=1,
                         min=1.0,
                         max=3.0,
                         step=0.1,
                         description="R*")

fp = widgets.FloatSlider(value=1,
                         min=0.35,
                         max=1.0,
                         step=0.05,
                         description="fp")

ne = widgets.FloatSlider(value=1
                         min=0.2,
                         max=3.0,
                         step=0.1,
                         description="ne")

fl = widgets.FloatSlider(value=1,
                         min=1.0,
                         max=1.3,
                         step=0.05,
                         description="fl")

fi = widgets.FloatSlider(value=1,
                         min=0.5,
                         max=1.5,
                         step=0.05,
                         description="fi")

fc = widgets.FloatSlider(value=0.20,
                         min=0.10,
                         max=0.30,
                         step=0.05,
                         description="fi",)

l = widgets.FloatSlider(value=60000000.0,
                         min=5000000.0,
                         max=1000000000.0,
                         step=5000000,
                         description="fi")


n = widgets.Text(
    value= str(int(r.value * fp.value * ne.value * fl.value * fi.value * fc.value * l.value)) + " civilizations" ,
    description='Estimated N:',
    disabled=True)

left_box = VBox([r, fp, ne,fl])
right_box = VBox([ fi,fc,l,n])
HBox([left_box, right_box])

我使用的这段代码显示了小部件,但不会自动更新小部件 n。对我来说最好的方法是什么,不需要每次都打印一个新值?

最佳答案

您可以使用 observe 以及每个滑块的值更改的回调函数

def on_value_change(change):
    n.value = str(int(r.value * fp.value * ne.value * fl.value * fi.value * fc.value * l.value)) + " civilizations" 

r.observe(on_value_change)
fp.observe(on_value_change)
# ...

关于jupyter-notebook - 每次更新 ipywidgets 时更新显示值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61176844/

相关文章:

Jupyter Notebook 中的 Octave 语法突出显示

python - python 中 globals() 和 locals() 的奇怪行为

python - 无法在 Ubuntu 的 Python 环境中运行 Jupyter Notebook

python - 将不可迭代变量传递给使用 map() 评估的函数

python - 使用没有 IPyWidgets 的拥抱脸转换器

python-3.x - 如何隐藏 PANDAS 和 Jupyter 的索引 0

css - 使用自定义主题替换/删除 Jupyter Notebook 中的突出显示

matplotlib - 为什么 matplotlib ax.transData.transform 在不同的 ipython 单元格中给出不同的值?如何解决这个问题?

python - 如何检查是否启用了 Jupyter Notebook 扩展?

Python ipywidgets ToggleButton 样式颜色