Как использовать функцию обратного вызова тире без ввода - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь вызвать обратный вызов plotly-dash без ввода, и метод не сработает.

Это приборная панель, которую я пытаюсь построить, используя тире. В прошлом, когда я использовал обратный вызов с обоими входами и выходами, все работало нормально, но когда я пытался использовать только выходные данные, результат не отображался на приборной панели.

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   

1 Ответ

0 голосов
/ 15 января 2019

Для вызова требуется обратный вызов, по крайней мере, одного ввода или события, как написано в коде dash.py:

Без Input или Event элементов этот обратный вызов никогда не получит называется.

(подписка на компоненты ввода вызовет обратный вызов всякий раз, когда их значения меняются и подписка на событие приведет к обратный вызов, который будет вызываться при каждом событии.)

В вашем случае - если для обратного вызова нет триггера, зачем использовать обратный вызов? Если вы хотите, чтобы total_tweet_callback запускался только один раз при загрузке, просто вызовите его из макета:

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",
)

Обратите внимание:

  1. Я удалил декоратор из total_tweet_callback.
  2. Я дал макету функцию , которая возвращает элемент Div. Это не обязательно требуется и зависит от других аспектов вашего кода, которые я не буду здесь рассматривать, но вы можете попробовать удалить lambda: и посмотреть, все ли еще работает.
...