相关疑难解决方法(0)

动态更改IPython笔记本小部件和Spyre中的下拉菜单

我在IPython笔记本(作为HTML小部件的一部分)和Spyre应用程序(作为dropdown元素)中有一个下拉列表,比如选择一个大陆,我想添加第二个下拉列表来选择该大陆的国家.现在很明显,第二个下拉列表中的选项取决于第一个下拉列表的值.我很难找到一种方便的方法来获得一个更新这个UI元素的回调函数.

我几乎在IPython笔记本中完成了这个,我有一个interact函数,在被调用的函数中,我interact用第二个下拉列表创建了第二个元素.但每当我更改第一个下拉列表时,都会创建一个新的下拉元素,因此每次更改时我都会得到一个额外的下拉列表.但我只希望更新一个下拉列表,就是这样.

希望问题很清楚.谢谢.

python ipython ipython-notebook

13
推荐指数
2
解决办法
9069
查看次数

ipywidgets:链接两个小部件,以便当一个小部件更新时,另一个小部件也会更新

我正在尝试将两个 ipython 小部件链接在一起,以便当一个小部件更新(滑块移动、文本输入等)时,另一个小部件也会更新。我发现您可以使用 将值链接在一起traitlets.link,但无法找到仅将更新行为链接在一起的方法。基本上,我希望一个小部件在另一个小部件调用它的on_trait_change(现在称为)处理程序时调用它。observe

我无法使用针对此问题建议的方法,因为需要更新的小部件的处理程序依赖于“触发”小部件无法访问的变量,因此“触发”小部件的处理程序不能简单地包含所需的操作需要更新的小部件。

例子:

from ipywidgets import widgets
from IPython.display import display

data={'foo':3, 'bar':5}
private_data=10 #input1 widget can use this data, input2 widget can't

output=widgets.Text(value='outputs', disabled=True)

def input_update(x):
    data['foo']=x
    output.value=str(data['foo']+data['bar']+private_data)

#elsewhere in another class, not privy to private_data
def input_update2(y):
    data['bar']=y

input1=widgets.interactive(input_update,x=10)
input2=widgets.interactive(input_update2,y=10)
display(output,input1,input2)
Run Code Online (Sandbox Code Playgroud)

widget ipython jupyter-notebook ipywidgets

6
推荐指数
0
解决办法
1291
查看次数