Совместите поле ввода макета приложения da sh с выпадающим списком и датами - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь создать макет с помощью приложения DA SH, и я не уверен, почему он не работает, когда я пытаюсь установить поля ввода с раскрывающимся списком.

здесь мой макет:

tab_1_layout = html.Div([
dcc.Input(id="ad_account_id", type="text", placeholder="Account ID", style={'width': '200px',
                                                                            'margin-top': 10,
                                                                            'margin-left': 20,

                                                                            }),
# html.Br(),
dcc.Input(id="app_id", type="text", placeholder="App ID", style={'width': '200px',
                                                                 'margin-left': 20,
                                                                 'display': 'inline-block'
                                                                 }),
# html.Br(),
dcc.Input(id="access_token", type="text", placeholder="Access Token", style={'width': '200px',
                                                                             'margin-left': 20,
                                                                             'display': 'inline-block'
                                                                             }),
# html.Br(),
dcc.Input(id="app_secret", type="text", placeholder="App Secret", style={'width': '200px',
                                                                         'margin-left': 20,
                                                                         }),

# html.Br(),
dcc.Dropdown(
    id='dimensions',
    options=[{'label': i, 'value': i} for i in ['Campaign', 'Placement', 'Creative']],
    multi=True,
    placeholder='Dimensions',
    style={'width': '200px', 'margin-left': 150, 'margin-top': 20, 'display':'inline-block'}
),
# html.Br(),
dcc.Dropdown(
    id='metrics',
    options=[{'label': i, 'value': i} for i in ['Impressions', 'Clicks', 'Conversions']],
    multi=True,
    placeholder='Metrics',
    style={'width': '200px', 'margin-left': 400}
),
html.Br(),
dcc.DatePickerSingle(
    id='start-date',
    placeholder="Start Date",
    min_date_allowed=datetime.datetime.now().strftime('2018-01-01'),
    max_date_allowed=datetime.datetime.today().date(),
    display_format='YYYY-MM-DD',
    style={'width': '200px', 'margin-top': 10, 'margin-left': 400}
),
# html.Br(),
dcc.DatePickerSingle(
    id='end-date',
    placeholder="End Date",
    min_date_allowed=datetime.datetime.now().strftime('2018-01-01'),
    max_date_allowed=datetime.datetime.today().date(),
    display_format='YYYY-MM-DD',
    style={'width': '200px', 'margin-top': 10, 'margin-left': 220}
),
html.Br(),
html.Button(id='submit-button', type='submit', children='Submit', style={'width': '200px', 'margin-top': 10,
                                                                         'margin-left': 10}),
html.Div(id='output_div')]),

это показывает интерфейс, как показано ниже, но я хочу выровнять измерение и метрики с первой строкой, а затем по второй строке выровнять дату начала и дату окончания, и третья строка будет отправлена. enter image description here

1 Ответ

1 голос
/ 27 апреля 2020

Есть несколько способов добиться этого, но лично мне нравится макет Da sh Bootstrap. Ниже ваш код реорганизован для использования bootstrap строк и столбцов для достижения того, что вы хотите. Bootstrap макет

import datetime
import dash
import dash_core_components as dcc
import dash_bootstrap_components as dbc
import dash_html_components as html

import numpy as np

app = dash.Dash(external_stylesheets = [dbc.themes.BOOTSTRAP])
app.title = "Steepest Descent"

server = app.server

row1 = html.Div(
    [
        dbc.Row([
            dbc.Col([
                dbc.Input(id="ad_account_id", 
                          type="text", 
                          placeholder="Account ID",
                          style={'width': '150px'}),
            ], width={"order": "first"}),

            dbc.Col([
                dbc.Input(id="app_id", 
                          type="text", 
                          placeholder="App ID",
                          style={'width': '150px'}),
            ]),
            dbc.Col([
                dbc.Input(id="access_token", 
                          type="text",
                          style={'width': '150px'},
                          placeholder="Access Token")
            ]),
            dbc.Col([
                dbc.Input(id="app_secret", 
                          type="text", 
                          style={'width': '150px'},
                          placeholder="App Secret")
            ]),

            dbc.Col([
                dcc.Dropdown(
                    id='dimensions',
                    options=[{'label': i, 'value': i} for i in ['Campaign', 'Placement', 'Creative']],
                    multi=True,
                    style={'width': '150px'},
                    placeholder='Dimensions')
            ]),
            dbc.Col([
                dcc.Dropdown(
                    id='metrics',
                    options=[{'label': i, 'value': i} for i in ['Impressions', 'Clicks', 'Conversions']],
                    multi=True,
                    style={'width': '150px'},
                    placeholder='Metrics')
            ])
        ], align="center"),
    ]
)

row2 = html.Div([
     dbc.Row([
         dbc.Col([
            dcc.DatePickerSingle(
                id='start-date',
                placeholder="Start Date",
                min_date_allowed=datetime.datetime.now().strftime('2018-01-01'),
                max_date_allowed=datetime.datetime.today().date(),
                display_format='YYYY-MM-DD',
                style={'width': '150px'}
            ),
        ], width={"order": "first"}),
        dbc.Col([
            # html.Br(),
            dcc.DatePickerSingle(
                id='end-date',
                placeholder="End Date",
                min_date_allowed=datetime.datetime.now().strftime('2018-01-01'),
                max_date_allowed=datetime.datetime.today().date(),
                display_format='YYYY-MM-DD',
                style={'width': '150px'}
            )], align="center"),
        ])
     ])

row3 = html.Div([
    dbc.Row([
         dbc.Col([
             html.Button(id='submit-button', type='submit', children='Submit', style={'width': '200px', 'margin-top': 10,
                                                                                                 'margin-left': 10}),

             ], width={"order": "first"}),
         dbc.Col([
             html.Div(id='output_div'),
             ])
         ])
    ])

app.layout = dbc.Container(children=[
                               row1,
                               html.Br(),
                               row2,
                               html.Br(),
                               row3]
                           )

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

enter image description here

...