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)
您还没有包含引导样式:
链接样式表 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)