Я пишу тире, чтобы получить пароль от пользователя. Я хочу иметь значок, который позволит пользователю просматривать введенные данные в виде обычного текста, а не скрытого. Для этого я создал группу ввода с полем ввода и кнопкой. Кнопка должна быть кликабельной, и на ней должен отображаться значок, позволяющий переключать видимость или скрытие пароля. Сама кнопка работает как положено, однако значок не отображается. Ниже мой код
import dash
import dash_bootstrap_components as dbc
from dash import Output, Input, State, html
from dash.exceptions import PreventUpdate
app = dash.Dash( external_stylesheets=[dbc.themes.BOOTSTRAP, dbc.icons.FONT_AWESOME],)
app.layout = dbc.Container(
dbc.Form(
[
dbc.Label("Password"),
dbc.InputGroup(
[
dbc.Input(
id = "signup-password",
type = "password",
placeholder = "",
required=True,
),
dbc.Button(
html.I(className = "bi bi-eye-fill"),
id = "password-toggle",
n_clicks=0,
outline=True,
color = "secondary",
style = {
"cursor": "pointer",
"display": "inline-block",
},
),
],
className = "mb-3",
),
],
className = "mb-3",
),
className = "p-5",
)
# Callback to toggle password visibility
@app.callback(
Output("signup-password", "type"),
Output("password-toggle", "children"),
[Input("password-toggle", "n_clicks")],
[State("signup-password", "type")],
)
def toggle_password_visibility(n_clicks, current_type):
if n_clicks is None:
raise PreventUpdate
return (
("password", html.I(className = "bi bi-eye-fill"))
if current_type == "text"
else ("text", html.I(className = "bi bi-eye-slash-fill"))
)
if __name__ == "__main__":
app.run_server()
а изображение значка, который я пытаюсь показать, можно найти здесь. Где я ошибаюсь?






Компоненты Dash Bootstrap включают в себя два набора значков:
dbc.icons.FONT_AWESOME (классы значков с префиксом 'fa')
dbc.icons.BOOTSTRAP (классы значков с префиксом 'bi')
Вам просто нужно включить dbc.icons.BOOTSTRAP в список external_stylesheets.