如何自定义 Plotly Dash 核心组件主题?

How to customise PlotlyDash core components theme?

最近我开始使用 PlotlyDash,我想用它构建一些仪表板。

现在我想在所有使用的组件上应用特定主题以获得一致的所需外观。

例如考虑这个清单项目:

import dash_core_components as dcc

dcc.Checklist(
    options=[
        {'label': 'New York City', 'value': 'NYC'},
        {'label': 'Montréal', 'value': 'MTL'},
        {'label': 'San Francisco', 'value': 'SF'}
    ],
    value=['NYC', 'MTL']
) 

我注意到您可以通过两个参数为该组件应用不同的样式,即“style”和“labelStyle”。

喜欢这个:

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash()

app.layout = html.Div(
    dcc.RadioItems(
        options=[
            {"label": "Option 1", "value": 1},
            {"label": "Option 2", "value": 2},
            {"label": "Option 3", "value": 3},
        ]
    ),
    id="radioitems",
    style={"padding": "10px", "max-width": "800px", "margin": "auto"},
)

但是,我不知道可以将哪些值传递给这些参数,也找不到所有可用选项的完整列表。

例如,我希望清单中的框遵循以下格式:

.Rectangle {
width: 20px;
  height: 20px;
  padding: 6px 4px 5px 4px;
  background-color: var(--colors-primary-a-500);
}

如果可能的话,我想查看所有自定义选项。这些值都是 CSS 属性吗?

(抱歉,如果问题很简单。我对前端的经验很少)

有一种方法可以覆盖初始应用程序使用 CSS 和 JS 创建的模板,您可以通过此 link 了解更多信息:https://dash.plotly.com/external-resources

来自 Link:

在您的 Dash 应用程序中包含自定义 CSS 或 JavaScript 很简单。只需在应用程序目录的根目录中创建一个名为 assets 的文件夹,并将 CSS 和 JavaScript 文件包含在该文件夹中。 Dash 将自动提供此文件夹中包含的所有文件。默认情况下,请求资产的 url 将是 /assets 但您可以使用 dash.Dash 的 assets_url_path 参数自定义它。

重要提示:对于这些示例,您需要在 Dash 构造函数中包含 name

即app = dash.Dash(name)而不是app = dash.Dash()。原因如下。

示例:包括本地 CSS 和 JavaScript 我们将创建几个文件:app.py,一个名为 assets 的文件夹,以及该文件夹中的三个文件:

- app.py
- assets/
    |-- typography.css
    |-- header.css
    |-- custom-script.js

app.py

import dash
import dash_core_components as dcc
import dash_html_components as html

app = dash.Dash(__name__)

app.layout = html.Div([
    html.Div(
        className="app-header",
        children=[
            html.Div('Plotly Dash', className="app-header--title")
        ]
    ),
    html.Div(
        children=html.Div([
            html.H5('Overview'),
            html.Div('''
                This is an example of a simple Dash app with
                local, customized CSS.
            ''')
        ])
    )
])

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

body {
    font-family: sans-serif;
}
h1, h2, h3, h4, h5, h6 {
    color: hotpink
}
header.css

.app-header {
    height: 60px;
    line-height: 60px;
    border-bottom: thin lightgrey solid;
}

.app-header .app-header--title {
    font-size: 22px;
    padding-left: 5px;
}