目前,我的应用程序 python 文件与 Django 框架中的特定组件分开。
我见过很多在应用程序 python 文件的同一个文件中编写带有回调的每个组件的示例。我想知道如何在带有回调的文件中编写 update_output_div() 函数并让应用程序调用它?非常感谢!
app = dash.Dash(__name__, external_stylesheets=external_stylesheets)
app.layout = html.Div([
...
])
@app.callback(
Output(component_id='my-output', component_property='children'),
Input(component_id='my-input', component_property='value')
)
def update_output_div(input_value):
return 'Output: {}'.format(input_value)
if __name__ == '__main__':
app.run_server(debug=True)
您可以创建一个将
app
作为参数的函数,并将您的装饰函数放入该函数中:
def init_callback(app):
@app.callback(
Output(component_id="my-output", component_property="children"),
Input(component_id="my-input", component_property="value"),
)
def update_output_div(input_value):
return "Output: {}".format(input_value)
然后你可以在定义
app.layout
之后像这样调用函数:
init_callback(app)
我正在寻找一种将单个回调拆分为多个函数的方法,这些函数可以 a.) 有参数 b.) 存储在单独的文件中。截至 2024 年 9 月,我尚未在网络上找到任何内容。这是此问题的解决方案。也许会对某人有所帮助:
test_functions.py
def my_function(input):
return input
test_app.py
from dash import callback, ctx, Dash, html, dcc, Input, Output
from test_function import my_function
app = Dash(__name__)
app.layout = html.Div([
dcc.Dropdown(id = "input1", options=[1, 2, 3, 4], value=1),
dcc.Dropdown(id = "input2", options=[5, 6, 7, 8], value=5),
html.Div(id = "output"),
])
@callback(
Output("output", 'children'),
Input("input1", "value"),
Input("input2", "value"),
prevent_initial_call=True,
)
def interim(d1, d2):
if ctx.triggered_id == "input1":
res = my_function(d1)
if ctx.triggered_id == "input2":
res = my_function(d2)
return res
app.run_server()
函数还可以采用多个参数(标准逗号分隔)和/或返回多个结果(作为字典或列表)。