Open1

Python Streamlitで任意の書式を設定したい場合にはwrite()関数でunsafe_allow_html引数をTrueとする

Teru roomTeru room

SteamlitはPythonによるデータの分析結果を爆速で見える化・共有化するのに便利です。しかし、便利さゆえにかゆいところに手が届かない点が見えかくれする場合も少なくありません。

例えば、わたしの場合、「エラーメッセージを表示させるために目立たせたないな」とか「ここの表示はインタラクティブに変わるので色を変えたいな」とかの贅沢な欲求が芽生えました。

公式のAPIドキュメントをあさったのですがなかなか見つけれない中、とある英語のブログにて解決策を提示して下さっている方がいました。

結論は至って簡単です。
write() 関数に引数 unsafe_allow_html を追加し、True にしてあげるだけです。

これで、表示したい部分にHTMLタグを指定するとタグのプロパティで設定した表示方法がそのまま画面に反映されます。

任意の書式を設定したい場合の書き方
streamlit.write(<TAG style="hoge:bar">ホゲホゲ</TAG>, unsafe_allow_html=True)

Pandas🐼のDataframeの中身が無い場合のエラーメッセージを装飾する場合はこんな感じになります。

実装例
import streamlit as st
import pandas as pd
def check_df(df):
  if df.empty:
    st.write('<span style="color:red;background:pink">該当するデータがありません・・・・</span>',
              unsafe_allow_html=True)
    return False
  else:
    return True

上記のコード実行した例を以下に示します。少し派手ですが、標準のStreamlitの画面には無いような文字色とか文字背景色を実現できています。