当前位置: 首页 > 面试题库 >

如何在bokeh python中捕获下拉窗口小部件的值?

空翼
2023-03-14
问题内容

链接中的bokeh 0.12.1的官方文档提供了以下用于创建下拉列表的代码。

http://docs.bokeh.org/en/latest/docs/user_guide/interaction/widgets.html#userguide-
interaction-
widgets

但这并未明确提及当有人单击并从下拉菜单中选择一个值时如何捕获下拉窗口小部件的值。

from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown

output_file("dropdown.html")

menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)

show(widgetbox(dropdown))

可以看到有两种名为on_click()和on_change()的方法,但是从文档中无法得知如何捕获该值。我们如何将选定的值分配给新变量?

编辑

根据@Ascurion的输入,我更新了我的代码,如下所示。但是当我在下拉列表中选择一个值时,在Spyder的ipython控制台中不会打印任何内容。请指教。

    from bokeh.io import output_file, show
    from bokeh.layouts import widgetbox
    from bokeh.models.widgets import Dropdown

    output_file("dropdown.html")


    menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")]
    dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu)

    def function_to_call(attr, old, new):
        print dropdown.value

    dropdown.on_change('value', function_to_call)
    dropdown.on_click(function_to_call)
    show(widgetbox(dropdown))

问题答案:

编辑 此答案不再适用于Bokeh版本2.XX。请参阅下面的评论和其他答案。

如果您设置on_change例如如下:

dropdown.on_change('value', function_to_call)

可以按以下方式访问所选项目的值function_to_call

def function_to_call(attr, old, new):
    print dropdown.value

为此,必须在function_to_call之前定义下拉列表。

您可以在页面顶部找到有关如何使用on_click和on_change(散景版本12.1)访问在小部件中设置的值的文档:

http://docs.bokeh.org/en/latest/docs/user_guide/interaction/widgets.html

编辑

要获得交互式反馈,您必须在服务器模式下运行bokeh,以便在与小部件进行交互时可以评估python代码。我略微更改了您的示例,以允许与

bokeh serve --show file_name.py

命令。然后,下面的代码在终端中打印出所选项目。

from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown
from bokeh.plotting import curdoc

menu = [("Quaterly", "time_windows"), ("Half Yearly", "time_windows"), None, ("Yearly", "time_windows")]
dropdown = Dropdown(label="Time Period", button_type="warning", menu=menu)

def function_to_call(attr, old, new):
    print dropdown.value

dropdown.on_change('value', function_to_call)

curdoc().add_root(dropdown)

浏览此处获取更多信息:

http://docs.bokeh.org/en/latest/docs/user_guide/server.html



 类似资料:
  • 问题内容: 我有一个要动态更改的小部件列表。 如何从窗口中删除小部件? 问题答案: 您可以调用以删除小部件(如果用于将其添加到窗口中)。 例: 如果使用,稍后可以再次显示该小部件,再次调用。如果您想永久删除它,请调用该小部件(这样您将无法重新添加它)。 如果你使用的方法,你可以使用或以 隐藏 的窗口小部件。

  • 我试图创建一个下拉使用在我的Web应用程序。以下是我正在做的事情: 但下拉列表似乎如下所示: 有一个空和空。我想把它去掉。有什么帮助吗?

  • 问题内容: 我需要在弹出窗口(使用)关闭之前执行一些操作。 像这样的东西会很好: 我该如何实现? 问题答案: 只要弹出窗口的url与父 页面 位于同一个域中, 您的示例就会起作用,并且您将事件更改为小写:

  • 问题内容: 我正在做一个项目,要求我在Tkinter标签窗口小部件中的某些文本下划线。我知道可以使用下划线方法,但是基于参数,我似乎只能使它在小部件的1个字符下划线。即 我需要能够在小部件中的所有文本下划线,我敢肯定这是可能的,但是如何? 我在Windows 7上使用Python 2.6。 问题答案: 要对标签小部件中的所有文本加下划线,您需要创建一个将underline属性设置为True的新字体

  • 问题内容: 我想捕获浏览器窗口/选项卡关闭事件。我已经尝试使用jQuery以下内容: 但这也适用于表单提交,这不是我想要的。我想要一个仅在用户关闭窗口时才触发的事件。 问题答案: 每当用户出于任何原因离开您的页面时,都会触发该事件。 例如,如果用户提交表单,单击链接,关闭窗口(或选项卡)或使用地址栏,搜索框或书签进入新页面,则将触发该事件。 您可以使用以下代码排除表单提交和超链接(其他框架除外):

  • 问题内容: 在Tkinter中是否可以将事件直接传递给父窗口小部件? 我有一个画布,该画布被其他画布的网格覆盖(是复数吗?),我使用方法添加了该画布。我希望某些事件(例如鼠标释放事件)由父画布处理。 如果仅将事件绑定到父方法,则和坐标相对于捕获事件的子画布而言。 问题答案: Tkinter不会将事件传递给父窗口小部件。但是,您可以通过使用绑定标签(或“ bindtags”)来模拟效果。 我能给出的