2025年5月30日 星期五

Streamlit 學習筆記 : 訊息框元件

這一周在忙著看 Hahow 企業版的 RAG 教學課程, 今天是端午節補假, 炎炎的夏日午後繼續上週的 Streamlit 測試, 本篇要來測試 Streamlit 的 5 種訊息框元件, 其函式與說明如下表 : 


訊息框函式 說明
st.info(body, icon=None) 顯示資訊訊息框,常用於顯示提示或說明文字。
body: 要顯示的文字內容
icon: 可選圖示 (例如 "ℹ️")
st.success(body, icon=None) 顯示成功訊息框,常用於顯示操作成功的回饋。
body: 要顯示的文字內容
icon: 可選圖示 (例如 "✅")
st.warning(body, icon=None) 顯示警告訊息框,提醒使用者注意潛在風險。
body: 要顯示的文字內容
icon: 可選圖示 (例如 "⚠️")
st.error(body, icon=None) 顯示錯誤訊息框,通常用於錯誤或失敗的狀況。
body: 要顯示的文字內容
icon: 可選圖示 (例如 "❌")
st.exception(exc) 顯示例外訊息框,用於顯示 Python 的例外物件及其 traceback。
exc: 要顯示的例外物件 (如 ValueError)


注意, 這五個元件只是單純輸出顯示, 並非互動式元件, 傳回值均為 None.

本系列所有測試文章參考 :



1. 提示訊息框 st.info() : 

呼叫 st.info() 函式並傳入必要參數 body (要顯示的文字內容) 會建立一個提示訊息框, 其參數結構如下 : 

st.info(body, icon=None)

st.info() 的傳回值為 None. 參數 body 為要輸出的提示文字, icon 參數用來指定顯示於提示文字左側的一個 Unicode 編碼的圖示字元, 通常會使用其中的 emoji 表情圖示區段 (U+1F600 ~ U+1F64F), 因為這區段的 Unicode 編碼在大部分的作業系統中會以彩色字型 (color font) 來著色, 從而讓訊息在視覺上更具辨識度或風格. 

常用的 emoji 圖示如下表 : 


Emoji 圖示 用途說明
ℹ️提示資訊(info)
成功、通過
錯誤、失敗
⚠️警告、注意
🔥異常、關鍵錯誤(exception)
🚀啟動、部署
💡提示、靈感
🔔通知、提醒
🐞錯誤追蹤(bug)
🧠想法、學習
🔒安全、隱私
📅日期、排程


更多 emoji 參考 : 


注意, Streamlit 的五種訊息框函式只有 st.exception() 沒有 icon 參數 (因為此元件用來輸出除錯訊息給開發人員而非用戶, 不需要表情圖示).

例如 :


測試 1 : 用 st.info() 顯示提示訊息 [看原始碼]   

# st-info-test-1.py
import streamlit as st

st.subheader('提示 (info) 訊息框')
st.info('這是預設的提示訊息框')
st.info('這是有 emoji 的提示訊息框', icon="ℹ️")

此例第一個 st.info() 未傳入 icon 參數, 預設僅顯示提示文字; 第二個則傳入表情圖示 ℹ️, 結果如下 :




可見 st.info() 會以淡藍色做為背景色. 

注意, emoji 字元並非在每一種程式編輯器都能正常顯示, 例如 Thonny 預設字型為 Consolas, 如果直接複製貼上 emoji 字型 ℹ️ 的話會僅顯示 i :




如果要能顯示 emoji 字型須到 "工具/選項/主題 & 字型" 選單中將字型改為支援 emoji 的字型例如 "Segoe UI Emoji" :




這樣就會顯示 emoji 字元了 (但沒彩色) :




如果是在 Colab 或是 VS Code 編輯器上毋須設定字型直接複製貼上即可顯示 emoji 字元. 


2. 錯誤訊息框 st.error() : 

此元件用來顯示錯誤訊息, 常用的 emoji 為 ❌, 元件的背景色為紅色, 例如 : 


測試 2-1 : 用 st.error() 顯示錯誤訊息 [看原始碼]   

# st-error-test-1-1.py
import streamlit as st

st.subheader('錯誤 (error) 訊息框')
st.error('這是預設的錯誤訊息框')
st.error('這是有 emoji 的錯誤訊息框', icon="❌")

結果如下 : 




st.error() 通常用在 try except 架構中用來顯示捕捉到的例外與錯誤. 例如 :


測試 2-2 : 在 try except 中用 st.error() 顯示錯誤訊息 [看原始碼]   

# st-error-test-1-2.py
import streamlit as st

st.subheader('錯誤 (error) 訊息框')
try:
    result=1/0
except Exception as e:
    st.error(f'捕捉到除以 0 例外 ({e})', icon="❌")

結果如下 :




3. 警告訊息框 st.warning() : 

此元件用來顯示警告訊息, 常用的 emoji 為 ⚠️, 元件的背景色為黃色, 例如 : 


測試 3 : 用 st.warning() 顯示警告訊息 [看原始碼]   

# st-warning-test-1-1.py
import streamlit as st

st.subheader('警告 (warning) 訊息框')
st.warning('這是預設的警告訊息框')
st.warning('這是有 emoji 的警告訊息框', icon="⚠️")

結果如下 :




4. 成功訊息框 st.success() : 

此元件用來顯示成功訊息 (操作成功或任務完成), 常用的 emoji 為 ✅, 元件的背景色為綠色, 例如 : 


測試 4 : 用 st.success() 顯示成功訊息 [看原始碼]   

# st-success-test-1-1.py
import streamlit as st

st.subheader('成功 (success) 訊息框')
st.success('這是預設的成功訊息框')
st.success('這是有 emoji 的成功訊息框', icon="✅")

結果如下 :




5. 異常訊息元件 st.exception() : 

此元件用來顯示完整的錯誤追蹤訊息 (traceback), 傳入參數為一個 Python 例外物件, 主要是用來在開發與除錯中給程式設計師看的, 與 st.error() 用來顯示錯誤訊息給用戶看用途不同, 所以此函式沒有 icon 參數, 元件的背景色為紅色, 例如 : 


測試 5 : 用 st.exception() 顯示異常訊息 [看原始碼]   

# st-exception-test-1.py
import streamlit as st

st.subheader('異常 (exception) 訊息框')
try:
    result=1/0
except Exception as e:
    st.exception(e)

結果如下 :



沒有留言 :