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