2025年5月22日 星期四

Streamlit 學習筆記 : 使用者輸入元件 (九) 數值滑桿

本篇旨在測試 Streamlit 的數值滑桿函式 st.slider().

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


呼叫 st.slider() 函式並傳入必要參數 label 會建立一個數值滑桿, 其參數結構如下 : 

st.slider(label, min_value=None, max_value=None, value=None, step=None, format=None, key=None, help=None, on_change=None, args=None, kwargs=None, disabled=False, label_visibility="visible")

st.slider() 只有一個必要參數 label, 其參數結構與數值輸入 st.number_input() 完全相同, 傳回值是滑桿所在位置之值. 

參數說明如下表 :


st.slider() 之參數 說明
label 滑桿的標籤文字
min_value 可選擇的最小值 (int, float, 或 datetime), 預設 None (其實為 0)
max_value 可選擇的最大值, 預設 None (其實為 100)
value 預設值。可為單一值,也可為 (min, max) 代表範圍
step 每次變動的間距
format 顯示格式 (如 "%d", "%.2f")
key 元件的唯一識別字串
help 滑鼠移過時顯示的提示文字
on_change 當值變動時呼叫的函式
args 傳給 on_change 的位置參數 (tuple)
kwargs 傳給 on_change 的關鍵字參數 (dict)
disabled 是否停用元件 (True 則無法操作)
label_visibility 標籤可見性,值為 "visible"(預設)、"hidden"、"collapsed"


例如 :


測試 1 : 輸入整數 [看原始碼

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

age=st.slider('請輸入年齡:', min_value=0, max_value=120, value=25, step=1)
st.write(f'您的年齡是:{age}')

結果如下 :




下面試輸入浮點數的例子 :


測試 2 : 輸入浮點數 [看原始碼]  

# st-slider-test-2.py
import streamlit as st

weight1=st.slider('請輸入體重:', min_value=0.0, max_value=150.0, value=50.0, step=1.0)
st.write(f'您的體重是:{weight1}')

結果如下 :




接著測試 on_change 與 args 參數 : 


測試 3 : 參數 on_change 與 args 用法 [看原始碼]    

# st-slider-test-3.py
import streamlit as st

def show_value(var):
    value=st.session_state[var]
    st.write(f'{var} 目前的數值是:{value}')

st.slider('請輸入 A 之值:', key='A', on_change=show_value, args=('A',))
st.slider('請輸入 B 之值:', key='B', on_change=show_value, args=('B',))

結果如下 :




上例也可以用 kwargs 來傳遞引數 :


測試 4 : 參數 on_change 與 args 用法 [看原始碼]   

# st-slider-test-4.py
import streamlit as st

def show_value(var):
    value=st.session_state[var]
    st.write(f'{var} 目前的數值是:{value}')

st.slider('請輸入 A 之值:', key='A', on_change=show_value, kwargs={'var': 'A'})
st.slider('請輸入 B 之值:', key='B', on_change=show_value, kwargs={'var': 'B'})

結果如下 :




下面範例測試 format 參數, 此參數只是用來控制元件上的數值顯示格式, 不會影響傳回值, 使用 Python 的格式化字串例如 %d, %e, %f, %g, %i, 與 %u 等, 參考 :


對於數值輸入而言最常用的是 %d 與 %f, 用法摘要如下表 :


常用 format 參數值範例 說明
%d整數顯示格式,例如 1、2、3
%.0f即始是浮點數也只顯示整數部分
%.1f顯示一位小數,例如 1.0、2.5
%.2f顯示兩位小數,例如 1.01、2.57


例如 : 


測試 5 : 參數 format 用法 [看原始碼   

# st-slider-test-5.py
import streamlit as st

st.subheader('format 參數測試')
st.slider('整數', 0, 10, step=1, format='%d')
st.slider('整數', 0.0, 10.0, step=0.1, format='%.0f')
st.slider('一位小數', 0.0, 10.0, step=0.1, format='%.1f')
st.slider('兩位小數', 0.0, 10.0, step=0.01, format='%.2f')

結果如下 :



沒有留言 :