是否可以根据输入字段是否已获得焦点来触发破折号回调?
Is it possible to trigger a dash callback based on whether an Input field has been focused?
如标题所示,我想在聚焦时触发破折号回调,即单击 dcc.Input 字段。
AFAIK 只能在输入字段通过 n_blur
属性 失去焦点时触发一个。我已经检查了 n_clicked
属性 是否存在作为按钮的那个,但是,它并没有导致任何地方。
这是一个棘手的解决方法,但是 html.Div
确实有 n_clicks
属性。所以你可以做的是用 div 包围你的输入,并使 div 具有与你的输入大致相同的尺寸,这样点击输入就会触发周围的 div' s n_click
,但在输入外单击不会。
MWE
from dash import dash, html, dcc
from dash.dependencies import Input, Output
app = dash.Dash(__name__)
app.layout = html.Div(
id="input-container",
children=[
dcc.Input(id="input", type="number"),
dcc.Store(id='throwaway-result-store')
],
style={"width": "fit-content"}
)
@app.callback(
Output("throwaway-result-store", "data"),
Input("input-container", "n_clicks"),
)
def handle_focus(n_clicks):
print(f"number of times input clicked {n_clicks}")
return n_clicks
if __name__ == "__main__":
app.run_server()
您可以像您提到的那样在输入中使用 n_blur
属性 来处理模糊。
如标题所示,我想在聚焦时触发破折号回调,即单击 dcc.Input 字段。
AFAIK 只能在输入字段通过 n_blur
属性 失去焦点时触发一个。我已经检查了 n_clicked
属性 是否存在作为按钮的那个,但是,它并没有导致任何地方。
这是一个棘手的解决方法,但是 html.Div
确实有 n_clicks
属性。所以你可以做的是用 div 包围你的输入,并使 div 具有与你的输入大致相同的尺寸,这样点击输入就会触发周围的 div' s n_click
,但在输入外单击不会。
MWE
from dash import dash, html, dcc
from dash.dependencies import Input, Output
app = dash.Dash(__name__)
app.layout = html.Div(
id="input-container",
children=[
dcc.Input(id="input", type="number"),
dcc.Store(id='throwaway-result-store')
],
style={"width": "fit-content"}
)
@app.callback(
Output("throwaway-result-store", "data"),
Input("input-container", "n_clicks"),
)
def handle_focus(n_clicks):
print(f"number of times input clicked {n_clicks}")
return n_clicks
if __name__ == "__main__":
app.run_server()
您可以像您提到的那样在输入中使用 n_blur
属性 来处理模糊。