見出し画像

Streamlit-tagsって便利なんか?

ライブラリを見てたらStreamlit-tagsなるものを見つけました。
もともとStreamlitにはMultiselectがあるじゃないですか。何が違うんじゃ?と思ったわけですよ。

Multiselect
Streamlit-tags

雰囲気はかなり似てますよね。気になったので確認しました。


◾️準備

1. ライブラリインストール

pip install streamlit-tags

2. サンプルプログラム

import streamlit_tags

keywords = streamlit_tags.st_tags(
    label='# Enter Keywords:',
    text='Press enter to add more',
    value=['Zero', 'One', 'Two'],
    suggestions=['five', 'six', 'seven', 'eight', 'nine', 'three', 'eleven', 'ten', 'four'],
    maxtags = 4,
    key='1')

◾️実行

1. エラー発生

ModuleNotFoundError: No module named 'st_tags'

エラー発生しました。一旦ライブラリの公式ページを確認してみます

どうもstreamlitのバージョンが関係していそうです。

エラー時のバージョン

確かに少し古いのでアップデートして再チャレンジします。

2. Streamlitのアップデート

pip install -U streamlit
更新後のバージョン

最新の状態に更新したところエラーがなくなりました。

3. 実行

streamlit run sample01.py

お馴染みの起動コマンドです。sample01.pyは自身のファイルに合わせてください。

◾️結果

1. 表示内容

初期表示として、「value」が適用され、suggestionsの値は入力補助されるみたいです。

例えば、「f」と入力すると「four」とうっすら浮かんできます。この状態で右キーを押すと、入力が補完されます。

2. Multiselectとの違い

今回の検証元となったところですが、一番の違いは
入力値は自由というところでしょうか。

Multiselectは、オブジェクト生成時に、設定している値から選択する仕様です。Streamlit-tagsは、入力を補助してくれるだけで、任意の値を入力することができます。

Streamlit-tags 入力例
Multiselect 入力例

◾️結論

似ているオブジェクトでしたが、それなりの意味があって用意されていました。
入力値を制限する必要がある場合はMultiselectを使い、ある程度入力補助は欲しいが制限はないようなアプリならStreamlit-tagsを使うといった棲み分けができそうです!


いいなと思ったら応援しよう!