尝试确定此dcc.interval禁用布尔属性是否是禁用回调函数的唯一方法。如果是,我是否只是将其添加到html.div并显示一个按钮?文件似乎不太清楚。我在任何地方都看不到它用法的例子。
有这么容易吗:
app.layout = html.Div(
html.Div([
#html.H4('my dash/plotly graph'),
dcc.Graph(id='live-update-graph'),
dcc.Interval(
id='interval-component',
interval=1*1000, # in milliseconds
n_intervals=0,
--> disabled=False <--
)
])
)
然后一个按钮出现了,还是它更复杂?比如设置按钮、在回调装饰器中设置输入/输出等等?
如果是这样的话,它似乎只是想停止回调。
在底部编辑
无论连接哪个回调函数来监听间隔组件,都会像设置间隔一样频繁地触发。如果您想停止回调,您需要一种方法将间隔的disabled
属性设置为False
。您可以通过创建一个带有回调的按钮来更新该道具,每次用户单击它,函数都会切换道具是True
还是False
。
然后出现一个按钮,或者它更复杂?比如设置按钮、在回调装饰器中设置输入/输出等等?后者。你必须自己把所有东西都装好。
您希望在什么条件下停止回调?你真的想要一个永远运行的间隔,每X秒更新一次吗?如果你手动触发回调,你的应用程序会更好地工作吗?这可能不太容易设置。
禁用间隔的回调示例:
在你的布局中有这样的东西:
html.Button(id='start-stop-button', label='Start/Stop')
@app.callback(
Output('interval-component', 'disabled'),
[Input('start-stop-button', 'n_clicks')],
[State('interval-component', 'disabled')],
)
def callback_func_start_stop_interval(button_clicks, disabled_state):
if button_clicks is not None and button_clicks > 0:
return not disabled_state
else:
return disabled_state