散景div小部件,通过按一个按钮更改文本

时间:2019-08-28 07:50:39

标签: javascript python jupyter-notebook bokeh

我想要一个bokeh按钮来更改div小部件中的文本。

我发现了类似的东西:

https://groups.google.com/a/continuum.io/forum/#!topic/bokeh/

我试图使这种情况适合我的情况,因为链接中显示的示例旨在更改按钮本身的文本。

from bokeh.models import CustomJS
from bokeh.layouts import row, column
from bokeh.models.widgets import Div, Button

op="FirstText"

Output= Div(text="""<font size="4">""" + op + """</font>""", width=200, height=20)


ChangeTextScript = """
    o1="NewText";
    //location.reload();
"""

ResponseButton = Button(label="ChangeText",callback=CustomJS(args={'o1':op},code=ChangeTextScript))

layout=(
    column(
        ResponseButton,
        Output
    )
)

output_file("ChangeText.html", title="NewText")

show(layout)

将显示按钮和“ FirstText”,但是单击按钮不会更改文本。我已经发现通过在Java脚本中添加当前注释的行来触发Java脚本(单击按钮会刷新页面)。

我还认为我可以使用“ ColumnDataSource”来刷新图表,但是Div不支持“ source = ...”

非常感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:2)

您需要将Div小部件本身作为回调的参数传递,并更新其text属性:

ChangeTextScript = """
    o1.text="<font size='4'>"+"NewText"+"</font>";
"""
ResponseButton = Button(label="ChangeText",callback=CustomJS(args={'o1':Output},code=ChangeTextScript))