使用服务器输入的Dash回调(python),知道输入数量已更改

时间:2019-10-28 19:29:54

标签: python input callback hyphen


我正在尝试为价格期权(财务)创建破折号应用程序。 我进行布局时,交互组件没有太多问题。 我的问题是:

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

我尝试过:

-1 /在dict中同时创建daq.NumericInputs的ID时,将它们存储在json中,然后尝试对该dict进行回调,该dict具有可变数量的元素。

-2 /使用StatePattern,StateGroup ...(如此处显示:https://github.com/plotly/dash/issues/475)。创建群组ID时,我将其提供给了daq.NumericInputs,然后尝试以组的形式在我的回调中调用它们。

代码:

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 ...

2 /

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

也许我完全迷失了方向,但我做错了方法(我从这个周末开始开发此应用程序,但是我从未在破折号(python)中做过其他应用程序,而在Shiny(R)中只做过一个)。

欢迎您提出所有答案和建议!

0 个答案:

没有答案