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()