Streamlit Version1.14.0で何が変わったか見てみよう

Streamlit

はじめに

2022-10-27にVersion1.14.0がリリースされました。
前回のVersion1.13.0から1ヶ月ちょっとのペースです。
あいかわらず早いペースで精力的に更新が行われています。
早速「ハイライト」「注目すべき変更点」の変更点を見て見ましょう。

2022/11/11にVersion1.14.1がリリースされました。1.14.0のバグフィックスです。

何がかわったの?

ハイライト

  • st.buttonとst.form_submit_buttonに通常のボタンに加えて強調ボタンを指定するキーワード「type」パラメータが追加されました。

注目すべき変更点

  • st.multiselectに一度に選択可能なオプション数を制限するキーワード「max_selections」パラメータが追加されました。
  • st.form_submit_buttonに「disabled」パラメータが追加されました。st.buttonなどのインプットウィジットには既に実装されている機能です。

その他の変更

  • t.dataframe と st.table がカテゴリ区間を入力として受け付けるようになりました
  • Plotlyチャートのパフォーマンスを改善しました
  • バグ修正: st.download_buttonがファイル名に非ラテン語1文字をサポートするようになりました
  • バグフィックス。st.imageがローカルGIFを静的なPNGとしてではなく、GIFとしてレンダリングできるようにしました
  • マルチページアプリのサイドバーのデザインを調整しました
  • 組み込みのチャートの軸構成を改善しました
  • メモとシングルトンの改良:show_spinnerでテキスト値をサポート、datetime.timedeltaオブジェクトをttlパラメータ値として使用、PILイメージとEnumクラスを適切にハッシュ、未評価のデータフレームを返す際のエラーメッセージを改善
  • st.map 2 と st.pydeck_chart で作成されたマップのズームボタンは、アプリのテーマに基づいてライトまたはダークスタイルを使用します
  • 現在のセッションの受信WebSocketリクエストのWebSocketヘッダーを、新しい「内部」(すなわち、非推奨のまま変更される可能性がある)APIから取得できるようになりました
  • Streamlitを初めてインストールし使用するときに表示されるテキストを改善しました

ハイライト

強調ボタン

st.buttonとst.form_submit_buttonに通常のボタンに加えて強調ボタンを指定するキーワード「type」パラメータが追加されました。
赤の背景で白抜き文字のボタンを追加することが出来ます。

プログラムコード
import streamlit as st

st.button('通常のボタン1(指定なし)')
st.button('通常のボタン2(type="secondary")', type="secondary")
st.button('強調のボタン(type="primary")', type="primary")
実行画面

注目すべき変更点

multiselectの選択数を制限する

selectbox(プルダウン)のマルチセレクトで選択できる個数を制限できるようになりました。キーワード「max_selections」パラメータで指定します。

プログラムコード
import streamlit as st

sel_list = ['red', 'green', 'white', 'blue', 'pink', 'brown', 'lightblue', 'orange']
st.multiselect('個数制限なし',sel_list)
st.multiselect('個数制限2個',sel_list, max_selections=2)
実行画面

上はmax_selectionsのパラメータがないので制限なく選択できます。
下はmax_selectionsで指定した2個選択した時点で追加の選択ができなくなります。
「You can only select up to 2 options. Remove an option first.」というメッセージは日本語に変更しようと思ったのですが変更できないようです。

form_submit_buttonの無効化

st.form_submit_buttonに「disabled」パラメータが追加されました。st.buttonなどのインプットウィジットには既に実装されている機能です。

プログラムコード
import streamlit as st

with st.form("form1"):
   slider_val = st.slider("スライダーの値")
   checkbox_val = st.checkbox("チェックボックス")

   # Every form must have a submit button.
   submitted = st.form_submit_button("フォームサブミット(有効)")
   if submitted:
       st.write("スライダーの値", slider_val, "チェックボックス", checkbox_val)

with st.form("form2"):
   slider_val = st.slider("スライダーの値")
   checkbox_val = st.checkbox("チェックボックス")

   # Every form must have a submit button.
   submitted = st.form_submit_button("フォームサブミット(無効)", disabled=True)
   if submitted:
       st.write("スライダーの値", slider_val, "チェックボックス", checkbox_val)
実行画面

上は、通常のフォームサブミットボタンで、ボタンクリックでスライダとチェックボックスの状態を読み取っています。
下はdisabled=Trueの指定により、フォームサブミットボタンが無効化されています。

おわりに

今回も地味な改定ではありますが、ボタンのハイライトやマルチセレクトボックスの個数制限などは使いどころが結構あるのではないかと思います。

コメント