Dash CallBacks 一种获取输出 ID 列表或函数静态变量的方法
Dash CallBacks A way to get a list of the Outputs Id or a static variable for the function
所以问题是这样的:
我正在创建一个通用回调,如下所示:
# create the callback for the page path
x = [Output(f"sideMenuSection{Section.buttonCount}Title", "style"), [Output(f"page-{name}-link", "active") for name in pages]]
outputList = [*chain(*(e if isinstance(e, list) else [e] for e in x))]
# Path Callback
app.callback(
outputList,
[
Input("url", "pathname"),
Input(f"sideMenuSection{Section.buttonCount}Title", "style")
],
)(toggle_active_links1)
函数toggle_active_links1的代码如下:
def toggle_active_links1(pathname, style, names):
print(names)
pathList = [pathname == name for name in names]
if True in pathList:
return pathList.insert(0,style)
else:
return pathList.insert(0,style)
我没有输入姓名!那是因为我无法从我的应用程序中的任何输入动态获取名称,现在这些名称位于我在回调中的输出列表中。
我看到 2 个选项,我不知道如何执行它们,也不确定它们是否可行:
以某种方式获取函数内的输出列表,从这里很容易找到我需要的名称列表。
在文件中的某处为我创建的每个对象创建一个静态变量,甚至可能为每个 toggle_active_links1 创建一个 class 我创建并尝试。听起来效率很低,而且我也不知道这是否可行或可行。
大家怎么看?我该如何继续?
我将尝试解决您在此答案中提出的第一个选项:
Somehow get a list of the Outputs inside the function and from here it's easy to find the list of names I need.
您可以通过 dash.callback_context
:
获取回调中的输出列表
outputs_list
, inputs_list
, and states_list
: lists of inputs, outputs, and state items arranged as you'll find them in the callback arguments and return value.
https://dash.plotly.com/advanced-callbacks
所以你可以在你的回调函数中使用 dash.callback_context.outputs_list
然后从那里开始。
所以问题是这样的: 我正在创建一个通用回调,如下所示:
# create the callback for the page path
x = [Output(f"sideMenuSection{Section.buttonCount}Title", "style"), [Output(f"page-{name}-link", "active") for name in pages]]
outputList = [*chain(*(e if isinstance(e, list) else [e] for e in x))]
# Path Callback
app.callback(
outputList,
[
Input("url", "pathname"),
Input(f"sideMenuSection{Section.buttonCount}Title", "style")
],
)(toggle_active_links1)
函数toggle_active_links1的代码如下:
def toggle_active_links1(pathname, style, names):
print(names)
pathList = [pathname == name for name in names]
if True in pathList:
return pathList.insert(0,style)
else:
return pathList.insert(0,style)
我没有输入姓名!那是因为我无法从我的应用程序中的任何输入动态获取名称,现在这些名称位于我在回调中的输出列表中。
我看到 2 个选项,我不知道如何执行它们,也不确定它们是否可行:
以某种方式获取函数内的输出列表,从这里很容易找到我需要的名称列表。
在文件中的某处为我创建的每个对象创建一个静态变量,甚至可能为每个 toggle_active_links1 创建一个 class 我创建并尝试。听起来效率很低,而且我也不知道这是否可行或可行。
大家怎么看?我该如何继续?
我将尝试解决您在此答案中提出的第一个选项:
Somehow get a list of the Outputs inside the function and from here it's easy to find the list of names I need.
您可以通过 dash.callback_context
:
outputs_list
,inputs_list
, andstates_list
: lists of inputs, outputs, and state items arranged as you'll find them in the callback arguments and return value.
https://dash.plotly.com/advanced-callbacks
所以你可以在你的回调函数中使用 dash.callback_context.outputs_list
然后从那里开始。