【发布时间】:2021-05-06 03:24:11
【问题描述】:
我尝试学习 Python Dash 来可视化一些数据。我使用多个按钮处理 Plotly 示例:
import dash
from dash.dependencies import Input, Output
import dash_html_components as html
external_stylesheets = ['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
html.Button('Button 1', id='btn-nclicks-1', n_clicks=0),
html.Button('Button 2', id='btn-nclicks-2', n_clicks=0),
html.Button('Button 3', id='btn-nclicks-3', n_clicks=0),
html.Div(id='container-button-timestamp')
])
@app.callback(Output('container-button-timestamp', 'children'),
Input('btn-nclicks-1', 'n_clicks'),
Input('btn-nclicks-2', 'n_clicks'),
Input('btn-nclicks-3', 'n_clicks'))
def displayClick(btn1, btn2, btn3):
changed_id = [p['prop_id'] for p in dash.callback_context.triggered][0]
if 'btn-nclicks-1' in changed_id:
msg = 'Button 1 was most recently clicked'
elif 'btn-nclicks-2' in changed_id:
msg = 'Button 2 was most recently clicked'
elif 'btn-nclicks-3' in changed_id:
msg = 'Button 3 was most recently clicked'
else:
msg = 'None of the buttons have been clicked yet'
return html.Div(msg)
if __name__ == '__main__':
app.run_server(debug=True)
代码显示最近单击了哪个按钮。我想问是否可以把它放在一个循环中,这样我就可以循环 i 个按钮,因为如果我想使用 50 个左右的按钮,这几乎是可行的。
代替
html.Button('Button 1', id='btn-nclicks-1', n_clicks=0),
html.Button('Button 2', id='btn-nclicks-2', n_clicks=0),
html.Button('Button 3', id='btn-nclicks-3', n_clicks=0),
类似:
for i in range(number_buttons):
html.Button('Button i', id='btn-nclicks-i', n_clicks=0)
@app.callback(
Input('btn-nclicks-i', 'n_clicks')
)
我希望能提供一些指向带有 Dash 回调的教程或示例的链接。
【问题讨论】:
-
此链接可能对您有所帮助:stackoverflow.com/questions/53917648/…
标签: python loops dynamic callback plotly-dash