gpt4 book ai didi

python - 关于 Bokeh 回调的说明

转载 作者:行者123 更新时间:2023-12-04 08:25:13 24 4
gpt4 key购买 nike

Bokeh 中的回调函数通常具有三个参数:attr , old , 和 newdocumentation 中的示例所示

def my_text_input_handler(attr, old, new):
print("Previous label: " + old)
print("Updated label: " + new)

text_input = TextInput(value="default", title="Label:")
text_input.on_change("value", my_text_input_handler)
我的问题是:
  • 为什么不是 attr在函数体内使用my_text_input_handler ?实际上是什么(attr)?
  • 参数是什么"value"在方法中text_input.on_change("value"...) ?
  • 运行 curdoc() 后,将显示一个带有值(“默认”)的文本框。然后我将该值(“默认”)更改为“测试”,没有打印出任何内容,而我认为会产生 2 个句子“上一个标签:默认”和“更新标签:测试”。

  • 谢谢你。

    最佳答案

    从文档:

    All widgets have an .on_change method that takes an attribute name and one or more event handlers as parameters. These handlers are expected to have the function signature, (attr, old, new), where attr refers to the changed attribute’s name, and old and new refer to the previous and updated values of the attribute.


  • attr不在函数 my_text_input_handler 的主体内使用,因为它不依赖数据或对数据做任何事情。所有回调 共享同一个签名 , func(attr, old, new) , 这个例子对 attr 没有任何作用.为什么不使用它的简短答案:没有特别的原因...

  • 您可以像这样轻松地重写它:
    def my_text_input_handler(attr, old, new):
    print("attr: " + attr)
    print("Previous label: " + old)
    print("Updated label: " + new)
    attr对应于 text_input.on_change("value", my_text_input_handler) 中的“值” .
  • 传递给 text_input.on_change 的 "value"参数函数是 text_input 的名称您正在观看的属性。因此,每次 text_input 的“值”属性发生变化时对象,回调函数( my_text_input_handler )使用属性名称(“值”)和旧值和新值调用。

  • 看看这个 HTML/Javascript 示例,以更好地理解它在做什么: https://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_onchange2
    这是一个示例,有助于说明回调在做什么。将此代码保存为“demo.py”,通过 bokeh serve demo.py 运行它并查看它是如何工作的。
    ''' 
    Use the ``bokeh serve`` command to run the example by executing:

    bokeh serve demo.py

    at your command prompt. Then navigate to the URL

    http://localhost:5006/demo

    in your browser.

    '''

    from bokeh.io import curdoc
    from bokeh.models import TextInput

    def my_text_input_handler(attr, old, new):
    print("attr: " + attr)
    print("Previous label: " + old)
    print("Updated label: " + new)

    text_input = TextInput(value="default", title="Label:")
    text_input.on_change("value", my_text_input_handler)

    curdoc().add_root(text_input)

  • 检查终端/命令行的输出,而不是浏览器的 javascript 控制台。

  • 您的原始代码确实应该打印:
    Previous label: default
    Updated label: test

    关于python - 关于 Bokeh 回调的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65300681/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com