如何修复我的 Plotly Dash 应用程序组织不正确

2023-09-30前端开发问题
1

本文介绍了如何修复我的 Plotly Dash 应用程序组织不正确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

#导入包导入破折号将 dash_core_components 导入为 dcc将 dash_bootstrap_components 导入为 dbc将 dash_html_components 导入为 html从 dash.dependencies 导入输入、输出、状态应用程序 = dash.Dash()#应用布局app.layout = html.Div([dbc.Row(儿童=[dbc.Col(id="card_col",width = 6),dbc.Col(id="form", width=6, children=[html.div([dbc.FormGroup(儿童=[dbc.Label(问题 1"),dbc.Col(dcc.Input(type="text", id="q1", placeholder="Enter your info"),宽度=6)],行=真)]),html.Br(),html.Div(儿童=[dbc.FormGroup(儿童=[dbc.Label(问题 2?"),dbc.Col(dbc.Input(type="text",id="q2",placeholder="Enter your info"),宽度=6)],行=真)]),html.Br(),html.div([dbc.FormGroup(儿童=[dbc.Label(是/否?"),dbc.Col(dbc.RadioItems(id=q3",options=[{label":是",值":1},{标签":否",值":2}]),宽度=6)],行=真)]),html.Br(),html.div([html.Button(id='提交按钮',n_clicks=0,children='提交查询',样式={'fontSize':24})])]) #第二列结束]), #行尾,dbc.Row(html.div([dcc.Graph(id='graph1')]))])@app.callback(输出('card_col','孩子'),输入('提交按钮','n_clicks'),状态('q1','值'),状态('q2','值'),状态('q3','值'))def update_cards(n_clicks,input1,input2,input3):卡1 = dbc.卡([dbc. CardBody([html.H4(f"{input1}", className="card-title"),html.P(f"{input1} 已提交.")],style={'display': 'inline-block','宽度': '33.3%','文本对齐':'中心','背景色': 'rgba(37, 150, 190)','白颜色',边框":2px 纯白色"})])卡2 = dbc.卡([dbc. CardBody([html.H4(f"{input2}", className="card-title"),html.P(f"{input2} 已提交.")],style={'display': 'inline-block','宽度': '33.3%','文本对齐':'中心','背景色': 'rgba(37, 150, 190)','白颜色',边框":2px 纯白色"})])卡3 = dbc.卡([dbc. CardBody([html.H4(f"{input3}", className="card-title"),html.P(f"{input3} 已提交.")],style={'display': 'inline-block','宽度': '33.3%','文本对齐':'中心','背景色': 'rgba(37, 150, 190)','白颜色',边框":2px 纯白色"})])返回(卡1,卡2,卡3)如果 __name__ == __main__":app.run_server()

解决方案

你没有包含引导样式:

<块引用>

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

<块引用>

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

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


所以不要这样:

app = dash.Dash()

这样做:

app = dash.Dash(external_stylesheets=[dbc.themes.BOOTSTRAP])

I'm trying to organize my Plotly Dash dashboard into sections of columns, but I can't understand what I'm doing wrong here. I've included my components in separate dbc.Cols within one dbc.Row and specified the width of the column I'd like for them to take up, but everything is just stacked. Ideally, I'd have the cards in a column all by themselves on the left, then I would have the questions next to them on the right. Can someone please help me diagnose what I'm doing that's causing all my components to stack?

#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()
    
    

解决方案

You haven't included the bootstrap styles:

Linking a stylesheet dash-bootstrap-components doesn't come with CSS included. This is to give you the freedom to use any Bootstrap v4 stylesheet of your choice. This means however that in order for the components to be styled properly, you must link to a stylesheet yourself.

In Python, each CDN link is available within the dbc.themes submodule and can be used when instantiating the app object.

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


So instead of this:

app = dash.Dash()

do this:

app = dash.Dash(external_stylesheets=[dbc.themes.BOOTSTRAP])

这篇关于如何修复我的 Plotly Dash 应用程序组织不正确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

layui 实现实时刷新一个外部的div
主页面上显示了一个合计,在删除和增加的时候需要更改这个总套数的值: //html代码div class="layui-inline layui-show-xs-block" style="margin-left: 10px" id="sumDiv"spanSOP合计:/spanspan${totalNum}/spanspan套/span/div 于是在我们删除这个条数据后,...
2024-11-14 前端开发问题
156

layui要如何改变时间日历布局大小?
问题描述 我想改变layui时间日历布局大小,这个要怎么操作呢? 解决办法 可以用css样式对时间日历进行重新布局,具体代码如下: !DOCTYPE htmlhtmlheadmeta charset="UTF-8"title/titlelink rel="stylesheet" href="../../layui/css/layui.css" /style#test-...
2024-10-24 前端开发问题
271

jQuery怎么动态向页面添加代码?
append() 方法在被选元素的结尾(仍然在内部)插入指定内容。 语法: $(selector).append( content ) var creatPrintList = function(data){ var innerHtml = ""; for(var i =0;i data.length;i++){ innerHtml +="li class='contentLi'"; innerHtml +="a href...
2024-10-18 前端开发问题
125

“数组中的每个孩子都应该有一个唯一的 key prop"仅在第一次呈现页面时
quot;Each child in an array should have a unique key propquot; only on first time render of page(“数组中的每个孩子都应该有一个唯一的 key prop仅在第一次呈现页面时)...
2024-04-20 前端开发问题
5

如何制作 TextGeometry 多线?如何将它放在一个正方形内,以便它像 html 文本一样包裹在 div 内?
How do I make a TextGeometry multiline? How do I put it inside a square so it wraps like html text does inside a div?(如何制作 TextGeometry 多线?如何将它放在一个正方形内,以便它像 html 文本一样包裹在 div 内?) - IT屋-程序员软件开发技术分享社...
2024-04-20 前端开发问题
6

缩放背景图像以适合 ie8 窗口
Scale background image to fit ie8 window(缩放背景图像以适合 ie8 窗口)...
2024-04-19 前端开发问题
11