问题描述
我想知道是否有办法通过 python 回调更新 panel
窗格内容。
如果我按以下方式定义 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)中的正弦波例子非常相似,但我不明白我做错了什么......
理想情况下,答案应该也适用于 panel.pane.HTML
和 panel.pane.Str
。
解决方法
我在 jupyter notebook 中尝试了你的代码并且它有效:当下拉列表更改时文本会更新。
如果我在我的 jupyter 实验室中尝试它,它不起作用,但我经常这样做。我认为这是一个 jupyter 版本/安装的东西。
所以我认为你的代码是正确的。您可以尝试更新您的 jupyter notebook 或面板或参数包。