Python/ipywidgets 函数,用于链接不同函数中的多个小部件

问题描述

我正在寻找一个简单的函数,它可以动态链接下面的 2 个函数,这样通过改变 D 或 R 的值,A 就会相应地改变。

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

dW = widgets.Dropdown(options=['2','1'])
rW = widgets.FloatText(200)
aW = widgets.FloatText()  

@interact(D=dW,R=rW)
def print_p(D,R):
    dW = D
    rW = R 
    
@interact(A=aW)
def prin_t(A):
    aW.value = int(dW.value) * int(rW.value)

解决方法

我认为 interact 在这里引起了一些混乱,为什么不对 dW 和 rW 使用标准的 observe 调用?

import ipywidgets as widgets

dW = widgets.Dropdown(options=['2','1'])
rW = widgets.FloatText(200)
aW = widgets.FloatText()

def change_a(_):
    aW.value = int(dW.value) * int(rW.value)

dW.observe(change_a)
rW.observe(change_a)

display(widgets.VBox(children=[dW,rW,aW]))