2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

plotly dashでサイドバーを作る

Last updated at Posted at 2022-03-18

目的

plotly dashでw3cssを使ってサイドバーを作ります。

Gif

edf6df9b-5513-4aee-99b1-ac7895d2cebb.gif

コード

1. import

from dash import dcc, html, Input, Output, callback

2. Dashアプリの作成

以下のコードでw3cssをDashで使えるようにします。

w3_css = "https://www.w3schools.com/w3css/4/w3.css"
app = Dash(__name__, external_stylesheets=[w3_css])

3. サイドバーの作成

  • className="w3-sidebar w3-bar-block"でサイドバーを作成
  • style={"width": "25%", "background-color": "#EEEEEE"}で幅と背景色の指定
sidebar = html.Div([html.H3("sidebar")],
                   hidden=True, id="sidebar", className="w3-sidebar w3-bar-block",
                   style={"width": "25%", "background-color": "#EEEEEE"})

4. メインコンテンツの作成

  • html.Button("sidebar", id="sidebar button")でボタンの作成
  • style={"margin-left": "0%"}で右にどれだけずれるのかを指定
main = html.Div([
    html.H3("main"),
    html.Button("sidebar", id="sidebar button")
], id="main", style={"margin-left": "0%"})

4. レイアウトの作成

サイドバーを上にしてください。

app.layout = html.Div([
    sidebar,
    main
])

5. コールバックの作成

@callback(Output("sidebar", "hidden"),
          Output("main", "style"),
          Input("sidebar button", "n_clicks"),
          State("sidebar", "hidden"))
def sidebar(n_clicks, hidden):
    # サイドバーボタンがクリックされた場合
    # サイドバーが表示されていたら閉じる
    # 閉じていたらサイドバーを開く
    if n_clicks
        hidden = not hidden
    # サイドバーを表示させるときに`margin-left`を25%に
    # 閉じるときに0%にする
    style = {"margin-left": "0%" if hidden else "25%"}
    return hidden, style

6.アプリに実行

app.run_server(debug=True)
2
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?