Spaces:
Sleeping
Sleeping
| 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() |