plotlyDash click의 시간에만 두 input의 값을 읽습니다
과제.
송신 단추를 트리거로 두 개의 입력이 프로그램을 쓴 곳을 읽으려고 했고, input의 변화도 트리거가 되었다.
app.layout = html.Div([
html.Div(
[
dbc.Form(
[
dbc.FormGroup(
[
dbc.Label("Column Name", className="mr-2"),
dcc.Input(
id = "input-col-name",
type = "text",
placeholder="Item Name",
),
],
className="mr-3",
),
dbc.FormGroup(
[
dbc.Label("Record Count", className="mr-2"),
dcc.Input(
id = "input-row-count",
type = "text",
placeholder="Record Count",
),
],
className="mr-3",
),
dbc.Button("Submit", id='submit-val', n_clicks=0, color="primary"),
],
inline=True
)
]
),
html.Div(id="table1")
])
@app.callback(
Output('table1', 'children'),
[Input('submit-val', 'n_clicks'),
Input('input-col-name', 'value'),
Input('input-row-count', 'value')]
)
def update_output(n_clicks, col_name:str, row_count:int):
if col_name and row_count:
df.create_numeric(col_name, int(row_count))
result = df.publish()
data = result.to_dict('rows')
columns = [{"name": i, "id": i,} for i in (result.columns)]
return dt.DataTable(data=data, columns=columns)
else:
return
해결의 실마리
인풋의 생각이 틀렸어요.
Input은 Callback 함수의 입력이지만 자바스크립트 등에watcher 작용이 있기 때문에value가 변하면 트리거가 함수를 발동합니다.만약 입력이 없다면, 아무리 검사해도 원래의 동작, 단추의 동작 앞에서 행동할 것이다
해결책
State 사용
Dash의 State를 Callback 매개 변수로 설정하면 변경 사항에 따라 발동할 수 없지만 함수로 입력할 수 있습니다(State가 변경되면 감지할 수 없음).
대시의 문서에도 이러한 사용 방법이 기술되어 있다
Dash App With State 참조
# 訂正前
Input('input-col-name', 'value')
Input('input-row-count', 'value')
#訂正後
State('input-col-name', 'value')
State('input-row-count', 'value')
Reference
이 문제에 관하여(plotlyDash click의 시간에만 두 input의 값을 읽습니다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/yassh_i/articles/077e6d35cad43c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)