我正在使用回调进行一个小项目。我做的第一个回调是根据下拉选择来更新表行-很好。现在,我正在尝试创建一个回调来更新Led显示器,但是我很难找出它的更新功能。
我创建了一个列表理解,其中标签是我想要的数字,值是用户将从下拉菜单中选择的状态。
有人可以帮助我了解如何创建一个回调,该回调将根据所选的下拉选项返回数字(标签)?
import dash
import dash_table
import pandas as pd
import dash_core_components as dcc
import dash_html_components as html
import dash_daq as daq
from dash.dependencies import Output, Input
# open csv file
df = pd.read_csv(f'https://raw.githubusercontent.com/plotly/'\
f'datasets/master/solar.csv')
# create a list of options to be used in the Dropdown
options = [{'label': i, 'value': i} for i in df.State]
# create list list comprehension to update daq.LEDDisplay value
dff =df.set_index('State')
digital = [{'label': f'{dff.loc[i, "Generation (GWh)"]}',
'value': f'{i}'} for i in dff.index]
# use external sheet to display side by side
external_stylesheets=['https://codepen.io/chriddyp/pen/bWLwgP.css']
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
html.H1('TEST'),
html.Div([
# dropdown with all options, default = California
dcc.Dropdown(id='dropdown',
options=options,
value='California'),
],className='three columns'),
html.Div([
dash_table.DataTable(
id='table',
# display row dependning on state selected
columns =[{'name': i, 'id': i} for i in df.columns],
data = df.to_dict('records')
)
],className='six columns'),
daq.LEDDisplay(
id='digital',
label='Test',
value=digital, #not sure what to put here
size=50)
])
# callback for table
@app.callback(
Output(component_id='table', component_property='data'),
[Input(component_id='dropdown', component_property='value')]
)
def update_rows(options):
dff = df[df['State'] == options]
return dff.to_dict('records')
# callback for daq.LEDDisplay
@app.callback(
Output(component_id='digital', component_property='value'),
[Input(component_id='dropdown', component_property='value')]
)
def update_digital(digital):
return digital
if __name__ == '__main__':
app.run_server(debug=True)
digital = [{'label':'10826','value':'California'},{'label':'2550','value':'Arizona'},{'label':'557', 'value':'Nevada'},{'label':'590','value':'New Mexico'},{'label':'235','value':'Colorado'},{'label' :'354','value':'Texas'},{'label':'1162','value':'North Carolina'},{'label':'84','value':'New York' }]
谢谢!
此方法有效。
# create dff2 to display in LED DISPLAY
dff2 = df[df['State'] == 'California']
dff2 = dff2.to_dict('records')
daq.LEDDisplay(
id='digital',
label='Generation (GWh)',
value=dff2[0]['Generation (GWh)'],
size=50)
# callback for daq.LEDDisplay
@app.callback(
Output(component_id='digital', component_property='value'),
[Input(component_id='dropdown', component_property='value')]
)
def update_digital(options):
dff2 = df[df['State'] == options]
dff2 = dff2.to_dict('records')
return dff2[0]['Generation (GWh)']