gpt4 book ai didi

python - Dash Bootstrap 组件 : Replace primary color across components

转载 作者:行者123 更新时间:2023-12-05 03:32:35 25 4
gpt4 key购买 nike

我目前正在编写 Dash 应用程序,主要使用 Dash Bootstrap 组件。我对布局非常满意,但想调整原色以匹配我公司的配色方案。在下图中,我基本上想用不同的颜色替换所有蓝色的东西。

额外的挑战是,由于托管环境的原因,不幸的是我只能使用一个大的 Python 文件——我不能有额外的 .css 文件。

我正在使用 BOOTSTRAP_STYLESHEET = [dbc.themes.SPACELAB]。我知道我可以通过使用例如替换单个组件的颜色style={'background-color':COMPANY_MAIN_COLOR}。有没有办法用不同的颜色代替 SPACELAB 的原色?或者至少,替换每个组件的默认值而不是必须为每个组件手动执行?

enter image description here

最佳答案

如果您可以添加一个 css 文件,我会采用这种方法。然后您可以简单地覆盖主要样式。

但是既然你指出这不是一个选项,你可以为你的按钮创建一个包装函数来设置默认背景颜色样式:

MWE

from dash import Dash, html, dcc
import dash_bootstrap_components as dbc


def CustomButton(*args, **kwargs):
default_color = "green"
default_color_light = "lightgreen"
default_color_dark = "darkgreen"
kwargs.setdefault("style", {"background-color": default_color, "background-image": "-webkit-gradient(linear, left top, left bottom, from(lightgreen), to(darkgreen))"})
return dbc.Button(*args, **kwargs)


app = Dash(external_stylesheets=[dbc.themes.SPACELAB])
app.layout = html.Div(
[
dbc.Button("Primary", color="primary", className="me-1"),
CustomButton("Primary", color="primary", className="me-1")
]
)

if __name__ == "__main__":
app.run_server()

result

这只会设置默认值,因此您可以通过设置 style 属性来覆盖颜色。如果您不想要默认的渐变,您可以从 setdefault 调用中删除 background-image 部分。

更新

或者,您可以通过 Customizing Dash's HTML Index Template 用 css 覆盖样式.

SPACELAB 样式定义了一个 --primary css 颜色变量,但令人恼火的是它没有在任何地方使用这个变量。不同的元素也可能以不同的方式改变颜色,所以我认为没有一种简单的万能方法可以做到这一点。但是您可以使用以下方法并向其添加样式,直到它成为您想要的样子

from dash import Dash, html, dcc
import dash_bootstrap_components as dbc

app = Dash(external_stylesheets=[dbc.themes.SPACELAB])
app.index_string = """
<!DOCTYPE html>
<html>
<head>
{%metas%}
<title>{%title%}</title>
{%favicon%}
{%css%}
<style>
.btn-primary {
background-image: linear-gradient(red, blue);
}
.custom-control-input:checked ~ .custom-control-label::before {
border-color: red;
background-color: red;
}
</style>
</head>
<body>
{%app_entry%}
<footer>
{%config%}
{%scripts%}
{%renderer%}
</footer>
</body>
</html>
"""

app.layout = html.Div(
[
dbc.Button("Primary", color="primary", className="me-1"),
dbc.Checklist(
options=[
{"label": "Option 1", "value": 1},
{"label": "Option 2", "value": 2},
],
value=[1],
id="switches",
switch=True,
),
],
)

if __name__ == "__main__":
app.run_server()

关于python - Dash Bootstrap 组件 : Replace primary color across components,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70438022/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com