我无法理解为什么某段代码不能按照我希望的方式工作。这是iPython Notebook服务器的一组简单小部件。
from IPython.html import widgets # Widget definitions
from IPython.display import display # Used to display widgets in the notebook
def returnParameter(parameterName = 'Specify Name'):
parameter = [ widgets.CheckboxWidget(),
widgets.TextWidget(value=parameterName),
widgets.DropdownWidget(values=['A', 'B']), ]
h_container = widgets.ContainerWidget(children=parameter)
return h_container
v_container = widgets.ContainerWidget( children=[ returnParameter(str(i)) for i in range(10) ] )
display(v_container) # <<- here it works
for h in v_container.children:
h.remove_class('vbox')
h.add_class('hbox')
# display(v_container) # <<- moving it here does not change 'hbox'
出于某种原因,如果我在之后执行h_container
,returnParameter()
函数中display(v_container)
的属性不会改变参数。但是,如果我将此行放在之前,它似乎确实会发生变化。我不确定为什么会这样。有帮助吗?理想情况下,我希望在函数returnParameter()
中推送属性更改,但由于上述原因,这显然是不可能的。有什么建议吗?