Spaces:
Sleeping
Sleeping
File size: 1,812 Bytes
c16b683 3d2b7df c16b683 3d2b7df |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import gradio as gr
# 1. 知識庫 (你的地科字典)
geo_dict = {
"板塊構造 (Plate Tectonics)": "地球的岩石圈被分成許多稱為「板塊」的巨大板塊,這些板塊在軟流圈上緩慢移動,彼此碰撞或分離,形成了火山、地震和山脈。",
"地震波 (Seismic Wave)": "地震時從震源向四面八方傳播的能量波。主要分為 P 波(壓縮波,速度快)和 S 波(剪力波,速度慢),它們是我們研究地球內部的主要工具。",
"海嘯 (Tsunami)": "由海底地震、火山爆發或山崩引起的巨大海浪。它在深海中傳播速度極快(可達時速 800 公里),但波高很低;當它靠近淺海岸時,速度減慢,波高則急遽增加。"
}
# 2. 定義介面函式 (app.py 將會匯入這個函式)
def get_definition(term):
# 從字典中查找解釋
return geo_dict.get(term, "查無此名詞")
# 3. 建立 Gradio 介面
with gr.Blocks(title="我的地科字典") as demo:
gr.Markdown("# 🚀 我的第一個地科 App (Level 1)")
# 輸入元件:下拉式選單
dropdown = gr.Dropdown(
label="請選擇一個地科名詞",
choices=list(geo_dict.keys()) # 選項來自字典的 "key"
)
# 輸出元件:文字框
output_textbox = gr.Textbox(
label="名詞解釋",
lines=5, # 顯示 5 行的高度
interactive=False # 使用者不能編輯
)
# 4. 綁定互動
dropdown.change(
fn=get_definition, # 當下拉選單改變時,呼叫 get_definition 函式
inputs=dropdown, # 輸入是下拉選單的 "值"
outputs=output_textbox # 輸出到文字框
)
# 5. 啟動 App ( [修改] 只有在直接執行此檔案時才啟動 )
if __name__ == "__main__":
demo.launch() |