如何修复我的 Plotly Dash 应用程序无法正常组织的问题

use*_*606 1 html python layout plotly plotly-dash

我正在尝试将 Plotly Dash 仪表板组织成列的部分,但我无法理解我在这里做错了什么。我已将我的组件包含在一个 dbc.Row 内的单独 dbc.Cols 中,并指定了我希望它们占用的列的宽度,但所有内容都只是堆叠在一起。理想情况下,我会将卡片单独放在左侧的一栏中,然后将问题放在右侧。有人可以帮我诊断我正在做的事情导致我的所有组件堆叠吗?

#Import packages
import dash
import dash_core_components as dcc
import dash_bootstrap_components as dbc
import dash_html_components as html
from dash.dependencies import Input, Output, State



app = dash.Dash()

#App Layout
app.layout = html.Div([
    dbc.Row(children=[
                dbc.Col(id="card_col",width = 6),
                dbc.Col(id="form", width=6, children=[
                    html.Div([
                        dbc.FormGroup(children=[
                            dbc.Label("Question 1"),
                            dbc.Col(
                                dcc.Input(type="text", id="q1", placeholder="Enter your info"),
                                width=6
                            )
                        ],row=True)
                    ]),
                    html.Br(),
                    html.Div(children=[
                        dbc.FormGroup(children=[
                            dbc.Label("Question 2?"),
                            dbc.Col(
                                dbc.Input(type="text",id="q2",placeholder="Enter your info"),
                                width=6
                            )
                        ],row=True)
                    ]),
                    html.Br(),
                    html.Div([
                        dbc.FormGroup(children=[
                            dbc.Label("Yes/No?"),
                            dbc.Col(
                                dbc.RadioItems(id="q3",options=[{"label": "Yes", "value": 1},
                                                                {"label": "No", "value": 2}
                                                               ]
                                              ),width=6
                            )
                        ],row=True)

                    ]),
                    html.Br(),
                    html.Div([
                        html.Button(id='submit-button',
                            n_clicks=0,
                            children='Submit Query',
                            style={'fontSize':24})

                    ])

                ]) #End of second column
                ]), #End of row,
    dbc.Row(
        html.Div([
            dcc.Graph(id='graph1')
        ])
    
    )
    

])


@app.callback(
    Output('card_col','children'),
    Input('submit-button','n_clicks'),
    State('q1','value'),
    State('q2','value'),
    State('q3','value'))
def update_cards(n_clicks,input1,input2,input3):
    
    card1 = dbc.Card([
        dbc.CardBody([
            html.H4(f"{input1}", className="card-title"),
            html.P(f"{input1} was submitted.")
        ],style={'display': 'inline-block',
           'width': '33.3%',
           'text-align': 'center',
           'background-color': 'rgba(37, 150, 190)',
           'color':'white',
           'border': "2px solid white"})
    ])
        
    card2 = dbc.Card([
        dbc.CardBody([
            html.H4(f"{input2}", className="card-title"),
            html.P(f"{input2} was submitted.")
        ],style={'display': 'inline-block',
           'width': '33.3%',
           'text-align': 'center',
           'background-color': 'rgba(37, 150, 190)',
           'color':'white',
           'border': "2px solid white"})
    ])
    
    card3 = dbc.Card([
        dbc.CardBody([
            html.H4(f"{input3}", className="card-title"),
            html.P(f"{input3} was submitted.")
        ],style={'display': 'inline-block',
           'width': '33.3%',
           'text-align': 'center',
           'background-color': 'rgba(37, 150, 190)',
           'color':'white',
           'border': "2px solid white"})
    ])    
        
    return (card1, card2, card3)
    

if __name__ == "__main__":
    app.run_server()
    
    
Run Code Online (Sandbox Code Playgroud)

Bas*_*den 5

您还没有包含引导样式:

链接样式表 dash-bootstrap-components 不包含 CSS。这是为了让您可以自由地使用您选择的任何 Bootstrap v4 样式表。然而,这意味着为了正确设置组件的样式,您必须自己链接到样式表。

在 Python 中,每个 CDN 链接都在 dbc.themes 子模块中可用,并且可以在实例化应用程序对象时使用。

https://dash-bootstrap-components.opensource.faculty.ai/docs/quickstart/


所以代替这个:

app = dash.Dash()
Run Code Online (Sandbox Code Playgroud)

做这个:

app = dash.Dash(external_stylesheets=[dbc.themes.BOOTSTRAP])
Run Code Online (Sandbox Code Playgroud)