在Dash上回调(python),服务器输入知道输入的数量发生了变化

2024-05-14 13:59:35 发布

您现在位置:Python中文网/ 问答频道 /正文


我试图创建一个破折号应用程序的价格选择(金融)。 我的布局没有太多交互组件的问题。 我的问题是:

我有一个daq.numericput(#daq1),它根据在#daq1中输入的数字创建其他几个daq.numericput。 现在我想在创建的daq.NumericInputs中存储这些值,但是我不知道我将预先拥有多少个值

我试过:

-1/在dict中创建daq.NumericInputs的id的同时,将其存储在json中,然后在此dict上尝试一个元素数目可变的回调

-2/使用StatePattern、StateGroup(如图所示:https://github.com/plotly/dash/issues/475)。在创建daq.NumericInputs时,我给了它们组ID,然后尝试在回调中作为一个组调用它们

代码:

1个/

    call_input = daq.NumericInput(
        id="call_input", className="setting-input", size=1000, max=nb_max_option,value=0
    )

    #in the app.layout :

        call_input
        html.Div(id='data-list-1')
        html.Div(id="call-tab")


    @app.callback([Output("call-tab", "children"),Output('data-list-1','children')],
         [Input("call_input", "value")])

    def build_call_tab(value):
        my_list = []
        store_data_1 = {}
        store_data_1["call_input"]="value"
        if float(format(value)) > 0:
            my_list.append(
                build_value_setter_line_3h(
                    "call-tab-header",
                    "Product",
                    "Strike",
                    "Buy/Sell"
                )
            )
            for i in range (1,value+1):
                my_list.append(
                    build_value_setter_line_3(
                        "call-tab-{}".format(i) ,
                        "Call Option {}".format(i) ,
                        daq.NumericInput(
                            id="call_input_strike{}".format(i) , className="setting-input", size=400, max=9999999,value=0
                        ),
                        "buy_sell_call{}".format(i)
                    ),
                )
                store_data_1["call_input_strike{}".format(i)]="value"
                store_data_1["buy_sell_call{}".format(i)]="value"

        return my_list, json.dumps(store_data_1)

    @app.callback(Output("graph-payoff-1", "children"),
                  [Input("button-payoff", "n_clicks")],
                  [State(key,value) for key, value in json.loads('data-list-1').items()])
    def ...

二/

    @app.callback(Output("graph-payoff-1", "children"),
                  [Input("button-payoff", "n_clicks")],
                  [StateGroup(group='id', property='value')])
    def ...

也许我完全迷路了,我这样做是错误的(我这个周末开始开发这个应用程序,我从来没有在dash(python)中做过其他应用程序,我只在Shiny(R)中做过一个)

欢迎您的回答和建议


Tags: storeidappformatinputoutputdatavalue

热门问题