【问题标题】:Update values of a table by clicking on different parameters in the drop-down menu. Dash Python通过单击下拉菜单中的不同参数来更新表的值。破折号 Python
【发布时间】:2021-07-27 09:48:46
【问题描述】:

谁能帮我检测一下为什么从下拉菜单中选择分支点参数时,表值没有更新?

我了解下拉菜单选项用作按钮,按下它应该会更新表格值。 谢谢。

jupyter notebook 的代码如下。

from dash.exceptions import PreventUpdate
from dash.dependencies import Input, Output
import dash_table
import dash_core_components as dcc
import dash_html_components as html

import dash
from jupyter_dash import JupyterDash
from dash.dependencies import Input, Output, State
import dash_bootstrap_components as dbc
from dash_table import DataTable, FormatTemplate
import cv2
import numpy as np
from mahotas.morph import hitmiss as hit_or_miss

app = JupyterDash(__name__)
server = app.server


percentage = FormatTemplate.percentage(2)


biomarkers = dbc.Card(
    id = 'biomarkers',
    children = [
                dbc.CardHeader(html.H5(dbc.Badge("Ratios of biomarkers",className="m1-1"))),
                dbc.CardBody(html.Div([
                'Choose biomarker to calculate the ratio: ',
                dcc.Dropdown(
                    id='biomarkers-options',
                    options=[
                        {'label': prop, 'value': prop}
                        for prop in [
                            'branchpoints', 'endpoints', 'mediumlength',
                            'totallength', 'specularoverlap']
                    ]
                ),
                html.Br(),
                dash_table.DataTable(
                    columns = [
                                dict(id='parameter', name='Parameter'),
                                dict(id='rate', name='Rate', type='numeric', format=percentage)
                            ],
                            data = [
                                    dict(parameter='Branch Points', rate=0),
                                    dict(parameter='End Points', rate=0),
                                    dict(parameter='Medium Length', rate=0),
                                    dict(parameter='Total Length', rate=0),
                                    dict(parameter='Specular Overlap', rate=0)
                                ],
                    editable=True
                )
                ]),
        ),
    ],
    # style={"width": "18rem"},
),


app.layout = html.Div(
    [
            dbc.Container(
                children=[
                    dbc.Row([dbc.Col(biomarkers, md=4)]),
                ],
                fluid= True,
               ),
     ]
 )

@app.callback(
    Output('loading-table', 'data'),
    Input('biomarkers-options', 'value'),
    State("loading-table", "data")
)


def loading_bp(value, table):
    if value == 'branchpoints':
        calcperbranchhem1=(50/(20+40))
    else:
        calcperbranchhem1=(50/(20+40))
    return html.Div([
                dash_table.DataTable(
                    id='loading-table',
                    columns = [
                                dict(id='parameter', name='Parameter'),
                                dict(id='rate', name='Rate', type='numeric', format=percentage)
                            ],
                            data = [
                                    dict(parameter='Branch Points', rate=calcperbranchhem1),
                                    dict(parameter='End Points', rate=0),
                                    dict(parameter='Medium Length', rate=0),
                                    dict(parameter='Total Length', rate=0),
                                    dict(parameter='Specular Overlap', rate=0)
                                ],
                    editable=True
                )

    ])

if __name__ == '__main__':
    # Run app and display result inline in the notebook
    app.run_server(mode='inline', host="localhost",port=8053)

【问题讨论】:

    标签: python drop-down-menu datatable plotly-dash


    【解决方案1】:

    你有

    State("loading-table", "data")
    

    但没有"loading-table"

    【讨论】:

    • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 2023-02-05
    • 2020-07-22
    • 2015-12-29
    • 2021-12-20
    • 2021-11-17
    • 1970-01-01
    • 1970-01-01
    • 2021-03-27
    • 2021-10-29
    相关资源
    最近更新 更多