Skip to content

建立 2026-09-14 更新 2026-09-14

自訂元件

多數專案用內建 Widget 與社群元件就夠。若你需要官方沒有的 UI(特殊滑桿、地圖控制、自己的 React 元件),Streamlit 提供 Components API:前端用 JavaScript/TypeScript 畫,Python 端用 declare_component 接回來。

下面兩集是官方工程師 Tim Conkling 錄的,目前仍是最接近原廠的逐步教學。需要一些 Python 與一點前端概念,不必先成為前端專家。

Part 1:環境與架構

頻道:Streamlit(官方) 講師:Tim Conkling

這支影片在講什麼

第一集幾乎不做新 UI,而是把「元件怎麼跟 Streamlit 說話」講清楚:

  1. 從官方 component template 複製專案。
  2. 建立虛擬環境,分別跑 Python 端與前端開發伺服器。
  3. components.declare_component:開發時指向 localhost 的前端、正式環境指向 build 出來的靜態檔。
  4. 前端呼叫 Streamlit.setComponentValue 之後,Python 函式才有回傳值;還沒呼叫時要用 default=
  5. key 參數:兩個元件若參數完全相同,Streamlit 無法分辨實體,會出現 duplicate widget id。這跟一般 Widget 的 key 是同一套規則。
  6. 用除錯器一步步看:st.title 送指令到前端 → declare 還不會畫出東西 → 真正 instantiate 元件才出現。這也順便複習「腳本由上往下、互動後整段重跑」的模型。

看完你會知道元件不是魔法,而是一次次前後端訊息。文件對照:Create a Component

在 YouTube 開啟

Part 2:做一個離散滑桿

頻道:Streamlit(官方)

這支影片在講什麼

第二集用 Material UI 做一個「離散滑桿」:傳入一串字,使用者用滑桿選其中一個,類似 st.radio / st.selectbox 但互動方式不同。

實務上會碰到:

  • 把 template 的 my_component 改成有意義的套件名稱
  • 前端樣式與第三方 UI 函式庫怎麼接
  • 把元件打包,之後用 pip 安裝進其他專案

若你只想使用別人做好的元件,不必看這兩集,到 streamlit.io/components 找現成套件即可。只有要自己做 UI 時,再跟著 Tim 做一遍。

在 YouTube 開啟