Dash中的按钮没有"点击"作为一个事件

时间:2018-03-21 22:53:35

标签: python python-3.x plotly-dash

我在布局中添加了一个按钮。当我尝试为它编写回调时,我收到以下错误:

dash.exceptions.NonExistantEventException: 
Attempting to assign a callback with
the event "click" but the component
"get_custom_vndr" doesn't have "click" as an event.

Here is a list of the available events in "get_custom_vndr":
[]

以下是我如何将其添加到我的布局中:

app_vndr.layout = html.Div([
    html.Button(
        '+',
        id='get_custom_vndr',
        type='submit'
    )
])

以及这里给出上述错误的回调函数:

@app_vndr.callback(
    dash.dependencies.Output('overlay', 'className'),
    events=[dash.dependencies.Event('get_custom_vndr', 'click'),
            dash.dependencies.Event('add_vndr_id_submit', 'click')])
def show_input(b1_n, b2_n):    
    if b1_n>0:
        return ''
    elif b1_n>0:
        return 'hidden'

当我将按钮添加到布局中时,我是否遗漏了什么?或者当我尝试写回调时?

我让它为

工作
dash.dependencies.Input('get_custom_vndr', 'n_clicks')

但是我想使用两个按钮进行相同的输出和n_clicks事件,我需要尝试通过比较当前的n_clicks和之前的n_clicks来确定点击了哪个按钮按钮,这似乎是一个非常黑客的方式。

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解你的问题,但是看看,如果这有帮助......

  

但是我想为同一输出使用两个按钮

轻松!只需将显式短划线组件定义为Output,然后将两个按钮定义为Input。无论点击哪个按钮,它们都会触发相同的功能。例如:

@app.callback(
    dash.dependencies.Output('overlay', 'className'),
    [dash.dependencies.Input('button1', 'n_clicks'),
     dash.dependencies.Input('button2', 'n_clicks')])

def update_output(n_clicks1, n_clicks2):
    # This is, where the magic happens
  

使用n_clicks事件,我需要尝试确定点击了哪个按钮

如果您想使用相同功能的两个按钮不同,正在使用哪一个,请将上述解决方案分成两个功能:

@app.callback(
    dash.dependencies.Output('overlay', 'className'),
    [dash.dependencies.Input('button1', 'n_clicks')])

def update_output(n_clicks1):
    # This is, where the magic happens for button 1

@app.callback(
    dash.dependencies.Output('overlay', 'className'),
    [dash.dependencies.Input('button2', 'n_clicks')])

def update_output(n_clicks2):
    # This is, where the magic happens for button 2

答案 1 :(得分:0)

Dash不允许对同一Output()进行多次回调