es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo ajustar el ancho de una lista de comprobación al ancho del menú desplegable padre en Dash Plotly?

Actualmente tengo una lista de verificación de Dash Core Components dentro de un menú desplegable de Dash Bootstrap Components y actualmente tengo problemas para obtener el ancho de la lista de verificación dentro del menú desplegable para que sea el mismo ancho del menú desplegable en el que se encuentra cuando se abre. Aquí está cómo se ve en este momento:

Y mi código de Python para el componente es el siguiente:

    html.Div([
        dbc.DropdownMenu([
            dcc.Checklist(
                id='hand-filter',
                options=[
                    {'label': 'Izquierda', 'value': 'Izquierda'},
                    {'label': 'Derecha', 'value': 'Derecha'},
                    {'label': 'Ambas manos', 'value': 'Ambas'},
                ],
                value=['Izquierda', 'Derecha', 'Ambas'],
                labelStyle={'display': 'block'},
                inputStyle={"margin-right": "5px"},
                className='ml-1',
            ),
        ],
            id='hand-dropdown',
            direction="arriba",
            label="Todas las opciones seleccionadas",
            color="info",
            className='mb-1 mw-100',
            toggle_style={'width': '100%'}
            # tamaño='lg'
        ),
    ],),

Ya he intentado agregar style={'width': '100%'} debajo de dcc.Checklist, sin embargo, eso no tiene efecto. Si es importante, el uso de píxeles en lugar de porcentaje ajusta el ancho de la lista de verificación de la siguiente manera style={'width': '1000px'}. Sin embargo, esto no ajusta dinámicamente el ancho de la lista de verificación al ancho del menú desplegable cuando se cambia el tamaño de la ventana de la aplicación. Además, el menú desplegable no se cierra cuando el usuario hace clic en un espacio alejado de él.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para que el ancho de la lista de verificación dentro del menú desplegable tenga el mismo ancho que el menú desplegable cuando se abre, puede agregar el siguiente código CSS:

    .dropdown-menu.show {
      width: max-content;
    }
    

    Esto establecerá el ancho del menú desplegable en el ancho de su contenido.

    Para agregar este CSS a su código, puede agregarlo en su carpeta assets en un archivo llamado style.css y luego hacer referencia a él en su código de diseño:

    app = dash.Dash(__name__, external_stylesheets=[dbc.themes.BOOTSTRAP, "assets/style.css"])
    

    Tenga en cuenta que esta solución podría no funcionar si tiene otros menús desplegables con diferentes anchos en su aplicación. En ese caso, es posible que deba agregar una clase o ID única a su menú desplegable y ajustar el CSS en consecuencia.

Comments are closed.