因此,花了我很多时间才发现这个问题,但是 在您的@ pn.depends()中,您必须添加参数watch = True
,因此它会不断侦听是否发生更改,并且应该对其他列表进行更新。
在这种情况下:
@pn.depends(continent.param.value, watch=True)
整个例子:
_countries = { 'Africa': ['Ghana', 'Togo', 'South Africa'], 'Asia' : ['China', 'Thailand', 'Japan'], 'Europe': ['Austria', 'Bulgaria', 'Greece']}continent = pn.widgets.Select( value='Asia', options=['Africa', 'Asia', 'Europe'])country = pn.widgets.Select( value=_countries[continent.value][0], options=_countries[continent.value])@pn.depends(continent.param.value, watch=True)def _update_countries(continent): countries = _countries[continent] country.options = countries country.value = countries[0]pn.Row(continent, country)
此页面上的GoogleMapViewer示例为我指明了正确的方向:
选择器在另一个选择器更改后更新
相同的答案,但以类的形式:
class GoogleMapViewer(param.Parameterized): continent = param.Selector(default='Asia', objects=['Africa', 'Asia', 'Europe']) country = param.Selector(default='China', objects=['China', 'Thailand', 'Japan']) _countries = {'Africa': ['Ghana', 'Togo', 'South Africa'], 'Asia' : ['China', 'Thailand', 'Japan'], 'Europe': ['Austria', 'Bulgaria', 'Greece']} @param.depends('continent', watch=True) def _update_countries(self): countries = self._countries[self.continent] self.param['country'].objects = countries self.country = countries[0]viewer = GoogleMapViewer(name='Google Map Viewer')pn.Row(viewer.param)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)