昨天天講了 Building 跟 Layout 的元件,那想必要有功能元件才能增強使用者體驗
今天來補充昨天尚未講完的主題,Component 吧!
Gradio 提供了許多現成的元件,例如文字輸入框、按鈕、下拉選單、圖片元件等,幾乎涵蓋了常見的網頁互動需求。截至 2025/9/18 今天的最新版本, Gradio 共有 46 個元件可以使用
先來一張 Button
元件可以調整的參數:
基本上裡面的參數名稱標示的很清楚,如 value
是修改按鈕上顯示的文字,size
是調整按鈕在網頁上的大小等等,基本上可以參考每個元件底下的 Initialization 段落的參數去做調整
(點開可以看到這個參數所代表的意思)
這邊講講最常用的參數:
choices
裡面的選項。choices
裡面的選項。Radio
與 Dropdown
等元件,其代表在元件裡面可以選擇的選項以上是參數設定的說明,再來是與元件互動的監聽器
如其名,可以監聽使用者對元件的互動事件,並且觸發 Python 函式,這邊以 Textbox
來做講解
enter
鍵時觸發gr.CopyData
取得使用者複製的文字觸發這邊要注意像是 change 與 input 的差別是,當我今天使用 Javascript 去修改 Textbox 裡面的數值時,change 會觸發而 input 不會,因為他不時使用者透過鍵盤輸入,反之今天使用者如果用鍵盤輸入文字時,change 與 input 都會觸發
以上原理一樣可以套用在 Dropdown 與 Radio 元件的 change 與 select 事件
這邊一樣講解幾個最常用的參數:
every 已捨棄!!
由於 Gradio 撰寫監聽器是使用生成器去接函式回傳的資料,這也是為什麼可以在函式執行到一半的時候回傳狀態到網頁上,以下是一個監聽器的範例
import time
import gradio as gr
def update_textbox_text():
yield gr.update(value="Hello")
time.sleep(5)
yield gr.update(value="World!!")
with gr.Blocks() as demo:
textbox = gr.Textbox()
button = gr.Button()
button.click(
update_textbox_text,
outputs=[textbox]
)
demo.launch()
當我們點下按鈕時,他會更新 "Hello" 的文字到 textbox 的欄位輸入框上,再來經過 5 秒過後會更新 "World!!" 的文字到 textbox 的欄位輸入框上