【问题标题】:Dash DAQ (Led Display) callback to update numberDash DAQ (Led Display) 回调更新号码
【发布时间】:2020-02-22 00:38:37
【问题描述】:

我正在做一个使用回调的小项目。我所做的第一个回调是根据下拉选择更新表格行 - 它工作正常。现在我正在尝试创建一个回调来更新 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)

数字 = [{'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 '}]

谢谢!

【问题讨论】:

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


    【解决方案1】:

    这行得通。

    # 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)']
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-30
      • 2020-03-11
      • 2019-12-17
      • 2021-09-15
      • 2020-03-18
      • 2020-08-12
      • 2020-02-15
      • 2021-03-16
      相关资源
      最近更新 更多