1

我想知道是否有办法panel通过 python 回调更新窗格内容。

如果我Parameterized通过以下方式定义自定义类:

import panel as pn
pn.extension()
import param

class Myclass(param.Parameterized):
    letter = param.ObjectSelector(
        objects=['a', 'b', 'c', 'd'],
        default='b',        
    )
    
    @param.depends('letter')
    def text(self):
        return(pn.pane.Str(self.letter))
    
instance = Myclass()

如果我在笔记本中输出这个实例,我会得到以下信息:

pn.Row(instance.param.letter, instance.text)

产量:

实例表示

但是,当我在下拉列表中选择另一个条目时,右侧的文本不会更新:

实例的另一种观点

我知道参数已经更新,并且text回调被触发(通过调试)。然而,我的笔记本没有更新。

我觉得这个例子与文档( https://panel.holoviz.org/user_guide/Param.html )中的正弦波示例非常相似,但我不明白我做错了什么......

理想情况下,答案也应该与 apanel.pane.HTML和 a一起使用panel.pane.Str

4

1 回答 1

1

我在 jupyter notebook 中尝试了您的代码,它可以工作:当下拉列表更改时,文本会更新。

如果我在我的 jupyter 实验室尝试它,它不起作用,但我更经常这样做。我认为这是一个 jupyter 版本/安装的东西。

所以我认为你的代码是正确的。您可以尝试更新您的 jupyter 笔记本或面板或参数包。

于 2021-01-08T21:50:14.903 回答