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 个选项,我不知道如何执行它们,也不确定它们是否可行:

  1. 以某种方式获取函数内的输出列表,从这里很容易找到我需要的名称列表。

  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 然后从那里开始。