Python 仪表板模式弹出切换代码为';行不通
我正在dash应用程序中使用模式弹出窗口。在布局中,我定义了两个按钮。一个Python 仪表板模式弹出切换代码为';行不通,python,plotly,plotly-dash,Python,Plotly,Plotly Dash,我正在dash应用程序中使用模式弹出窗口。在布局中,我定义了两个按钮。一个 打开模式,另一个关闭模式。我在文档中引用了这个示例,并使用稍微不同的代码来侦听每个按钮 模式结束后,我想调用一个函数并运行其他代码行。然而,我似乎听不到关闭按钮的按钮点击 # Modal buttons - layout code dbc.Button("Add", id="open-btn"), dbc
打开
模式,另一个关闭
模式。我在文档中引用了这个示例,并使用稍微不同的代码来侦听每个按钮
模式结束后,我想调用一个函数并运行其他代码行。然而,我似乎听不到关闭按钮的按钮点击
# Modal buttons - layout code
dbc.Button("Add", id="open-btn"),
dbc.Button("Close", id="close-btn")
# Callbacks
# Modal toggle
@app.callback(Output("modal-2", "is_open"),
[
Input("open-btn", "n_clicks"),
Input("close-btn", "n_clicks")
],
[
State("Address", "value"),
State("City","value"),
State("Zip","value"),
State("State","value"),
State("modal-2", "is_open")
],
)
def add_prop(open_btn, close_btn, address, city, zip, state, is_open):
if open_btn:
return not is_open
## This code doesn't work
if close_btn:
print("Call function")
append_prop(tenant, industry, address, city, zip, state)
return is_open
我正在试图弄清楚为什么关闭弹出代码块不起作用。发生的事情是,
open\u btn
,它基于该组件的n\u点击
属性,从值0
开始。当用户单击该按钮时,它将递增,并使用值为1
的open\u btn
触发回调。该属性将保留将来调用回调的值。因此,当关闭按钮触发回调时,open\u btn
仍然有一个值1
,第一个if
语句的计算结果为True
解决这个问题的方法是使用
def add_prop(打开、关闭、地址、城市、邮政编码、州、是否打开):
ctx=dash.callback\u上下文
如果未触发ctx,则:
button_id='尚未单击'
其他:
按钮id=ctx。已触发[0]['prop_id']。拆分('.')[0]
现在,您可以检查button\u id
的值,查看是打开还是关闭按钮导致回调触发,并执行代码的正确部分