3
3

Streamlitとは

StreamlitはPython向けのWebアプリケーションフレームワークです。

Streamlitを使うとフロントエンドの知識ゼロでもデータを可視化するためのWebアプリケーションを簡単に作れます。以下のような機能が特徴。

  • 変数を地の文に書くだけで、GUIに出力される(マジックコマンド)
  • st.radiost.text_inputのようなWidget APIを呼び出すだけで、GUIコンポーネントが生成される

Streamlitの最新バージョン

Streamlitの最新バージョンはChangelogで確認できます。
2024/1/31時点で最新バージョンは1.30.0です。

1.30.0では次がHighlightsとしてアナウンスされています。

  • st.switch_page
  • st.query_params

st.switch_page

マルチページ対応の機能強化です。
1.10.0でリリースされたマルチページ対応はサイドバーでページを切り替えるものだったのですが、st.switch_page関数でアプリケーションから能動的にページを切り替えられるようになりました。
例えばボタンを押したときにページを切り替えられますね。

multipage.py
import streamlit as st

# ディレクトリ構成は必ず次のように構成する。pagesはディレクトリ名を変更できない!
# your-repository/
# ├── pages/
# │   ├── page1.py
# │   └── page2.py
# └── multipage.py

if st.button("Home"):
    # 最初のページに切り替える
    st.switch_page("multipage.py")
if st.button("Page 1"):
    # page1.pyに切り替える。なお、サブページは必ずpagesディレクトリに配置する必要がある
    st.switch_page("pages/page1.py")
if st.button("Page 2"):
    # page2.pyに切り替える。なお、サブページは必ずpagesディレクトリに配置する必要がある
    st.switch_page("pages/page2.py")

st.write('Here is mainpage.')

Streamlit switch_page

st.query_params

URLクエリパラメータ対応の正式リリースです。
これまではst.experimental_get_query_paramsというexperimentalカテゴリの機能として実装されていました。

param_check.py
import streamlit as st

# URLクエリパラメータを読み込む
params = st.query_params.to_dict()

# dictとして取得されることを確認する
st.write(params)

# 重複するキー(Repeated keys)に対応するにはキーを指定してget_allする
for key in params.keys():
    values = st.query_params.get_all(key)
    st.write(f'key: {key}')
    st.write(values)

次のようにURLクエリパラメータを渡すことができます。

http://localhost:8501/?first_key=1&second_key=two&third_key=true&third_key=repeated

Streamlit query_params

なお、残念ながら前述のマルチページ対応とは同時に使えません。遷移するときにURLクエリパラメータが消えてしまいます。また、st.switch_pageでURLクエリパラメータを渡す方法も今のところ用意されていません。残念。

Query parameters are cleared when navigating between pages in a multipage app.

3
3
0

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
3
3