通过单击下拉菜单中的不同参数来更新表的值短跑Python

vptzau2j  于 2021-09-29  发布在  Java
关注(0)|答案(0)|浏览(156)

有人能帮我找出为什么从下拉菜单中选择branchpoint参数时,表格值没有更新吗?
我知道下拉菜单选项作为一个按钮工作,按下它应该会更新表格值。非常感谢。
jupyter笔记本的代码如下。

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)

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题