如何在没有输入的情况下使用破折号回调

时间:2019-01-15 04:00:22

标签: python plotly plotly-dash

我正在尝试在没有Input的情况下调用plot-dash回调,并且该方法将不会触发。

这是我尝试使用破折号构建的仪表板。过去,当我同时使用Input和Output回调时,一切都很好,但是当我尝试仅使用输出时,结果不会显示在仪表板上。

html.Div(
    [

        html.P(
            "Tweet Count",
            className="twelve columns indicator_text"
        ),
        html.P(
            id = 'tweet_value',
            className="indicator_value"
        ),
    ],
    className="four columns indicator",

)

@app.callback(
Output("tweet_value","children")

)
def total_tweet_callback():

    return 100   

2 个答案:

答案 0 :(得分:3)

至少需要一个输入或事件才能调用回调,如df1 <- structure(list(Year = c(2001L, 2002L, 2003L, 2001L, 2002L, 2001L, 2003L), Var = 1:7), class = "data.frame", row.names = c(NA, -7L )) 代码中所述:

  

没有dash.pyInput元素,此回调将永远不会得到   叫。

     

(订阅输入组件将导致回调被调用   每当它们的值改变并订阅事件将导致   触发事件时要调用的回调。)

在您的情况下-如果回调没有触发器,为什么要使用回调?如果您希望Event在加载时仅运行一次,只需从布局中调用它即可:

total_tweet_callback

注意:

  1. 我从def total_tweet_callback(): return 100 app.layout = lambda: html.Div( [ html.P( "Tweet Count", className="twelve columns indicator_text" ), html.P( children=total_tweet_callback(), id='tweet_value', className="indicator_value" ), ], className="four columns indicator", ) 移除了装饰器。
  2. 我为布局提供了一个 function ,该函数返回Div元素。这不是必需的,它取决于您代码的其他方面,我将不在这里介绍,但是您可以尝试删除total_tweet_callback并查看它是否仍然有效。

答案 1 :(得分:1)

所有回调在加载后均运行一次,除非明确禁用。因此,一种简单的解决方案是使用虚拟输入,引用任何内容,而只是不使用它。

我不同意其他答案。直接调用该函数不会使其触发每个“加载”。这样,该函数仅在语句运行时运行一次。仅在启动应用程序时才触发该功能,而不是每次您单击浏览器的刷新按钮时才触发。如果在此处使用datetime.datetime.now(),则可以看到区别。