Div(也有 id)问题设置值中的下拉(有 id)

Dropdown (with id) within a Div (also with id) problem setting a value

我正在尝试使用 daq.BooleanSwitch 来显示或隐藏下拉菜单。为了也隐藏所述下拉列表的 html.Label,我给了 Div 一个 id。这样我就可以将 Div 的样式从 {'display':'block'} 更改为 {'display':'none'} 并隐藏 both 标签和下拉菜单。

我的问题:

-> 不给 div 一个 id,导致只有下拉菜单被隐藏,而不是标签。

--> 给 div 一个 id 会导致我的下拉值(值=5)出现这个错误:

Exception has occurred: TypeError string indices must be integers

相关代码:

html.Div([
    daq.BooleanSwitch(
    id='hour_or_day',
    on=True,
    label='Hour/Day',
    labelPosition="bottom",
    color="#002255")])

html.Div( id= 'hide_choosehour' [
    html.Label('Choose hour:'),
    dcc.Dropdown(
    id='hourChoice',
    options=[{'label': str(i), 'value': str(i)} for i in range(24)],
    value = 5,
    )
], style= {'display':'block'})


@app.callback(
   Output('hide_choosehour', 'style'),
   Input('hour_or_day', 'on')
)

def show_hide_ChooseHour(on):
    if on:
        return {'display': 'none'}
    return {'display': 'block'}

if __name__ == '__main__':
    app.run_server(port=8050, debug=True)

我找到了一个解决方法,即不使用标签或 hmtl.P(因此不再需要 div id),而是使用包含所需文本的占位符。不过还是很好奇,作为标签最好。欢迎大家多多指教,有什么不明白的地方请多多指教!

将 div 的 ID 移到括号之后而不是之前解决了我的问题!

html.Div([
    html.Label('Choose hour:'),
    dcc.Dropdown(
    id='hourChoice',
    options=[{'label': str(i), 'value': str(i)} for i in range(24)],
    value = 5),
],id='hide_choosehour', style= {'display':'block'})