gpt4 book ai didi

python - Ipywidgets 在交互式而不是小部件上观察方法

转载 作者:行者123 更新时间:2023-12-05 06:11:40 25 4
gpt4 key购买 nike

ipython 小部件和交互式对象都有 observe() 方法。 (请参阅打印语句的结果。)通过以下示例,我可以确认 observe() 方法在 slider 小部件上的操作,但不能在交互式(即)对象上确认。

问: 有什么方法可以使用交互式的观察方法,或者我必须在它的所有小部件组件上调用单独的 observe() 方法?如果是,为什么?

预期行为:在更改 inp1 后打印“即观察到的变化”,

from IPython.display import display
import ipywidgets as widgets

int_range0_slider = widgets.IntSlider()
int_range1_slider = widgets.IntSlider()
output = widgets.Output()

def interactive_function(inp0,inp1):
with output:
print('ie changed. int_range0_slider: '+str(inp0)+' int_range1_slider: '+str(inp1))
return

def report_int_range0_change(change):
with output:
print('int_range0 change observed'+str(change))
return

def report_ie_change(change):
with output:
print('ie change observed'+str(change))
return

ie = widgets.interactive(interactive_function, inp0=int_range0_slider,inp1=int_range1_slider)

print(int_range0_slider.observe)
print(ie.observe)
int_range0_slider.observe(report_int_range0_change, names='value')
ie.observe(report_ie_change)

display(int_range0_slider,int_range1_slider,output)

我是新手,任何有关正确使用的帮助将不胜感激。

最佳答案

是的,不,你不能那样做。交互对象的观察将针对 child 的变化。所以,那里没有变化。

您可以做的是观察 child 。像这样。

for child in ie.children:
child.observe(report_ie_change)

因此,您的代码将如下所示:

from IPython.display import display
import ipywidgets as widgets

int_range0_slider = widgets.IntSlider()
int_range1_slider = widgets.IntSlider()
output = widgets.Output()

def interactive_function(inp0,inp1):
with output:
print('ie changed. int_range0_slider: '+str(inp0)+' int_range1_slider: '+str(inp1))
return

def report_int_range0_change(change):
with output:
print('int_range0 change observed'+str(change))
return

def report_ie_change(change):
with output:
print('ie change observed'+str(change))
return

ie = widgets.interactive(interactive_function, inp0=int_range0_slider,inp1=int_range1_slider)

# print(int_range0_slider.observe)
# print(ie.observe)
# int_range0_slider.observe(report_int_range0_change, names='value')
for child in ie.children:
child.observe(report_ie_change)

display(int_range0_slider,int_range1_slider,output)

关于python - Ipywidgets 在交互式而不是小部件上观察方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63904803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com