import tkinter as tk
from tkinter import ttk

# 八大行星详细数据
planets = {
    "水星": {
        "直径": "4879 km",
        "质量": "3.3×10²³ kg",
        "公转周期": "88 天",
        "特点": "距离太阳最近，表面温度极差极大，没有大气层。"
    },
    "金星": {
        "直径": "12104 km",
        "质量": "4.87×10²⁴ kg",
        "公转周期": "225 天",
        "特点": "太阳系最热行星，逆向自转，被浓厚大气覆盖。"
    },
    "地球": {
        "直径": "12742 km",
        "质量": "5.97×10²⁴ kg",
        "公转周期": "365 天",
        "特点": "唯一存在生命的星球，71%表面被水覆盖。"
    },
    "火星": {
        "直径": "6779 km",
        "质量": "6.42×10²³ kg",
        "公转周期": "687 天",
        "特点": "红色星球，拥有太阳系最高山脉奥林匹斯山。"
    },
    "木星": {
        "直径": "139820 km",
        "质量": "1.90×10²⁷ kg",
        "公转周期": "11.86 年",
        "特点": "太阳系最大行星，气态巨行星，拥有著名大红斑。"
    },
    "土星": {
        "直径": "116460 km",
        "质量": "5.68×10²⁶ kg",
        "公转周期": "29.46 年",
        "特点": "拥有壮观光环，主要由氢和氦组成。"
    },
    "天王星": {
        "直径": "50724 km",
        "质量": "8.68×10²⁵ kg",
        "公转周期": "84 年",
        "特点": "自转轴倾斜97°，几乎“躺着”绕太阳公转。"
    },
    "海王星": {
        "直径": "49244 km",
        "质量": "1.02×10²⁶ kg",
        "公转周期": "164.8 年",
        "特点": "太阳系最外侧行星，拥有太阳系最强风暴。"
    }
}

# 主界面类


class PlanetApp:
    def __init__(self, root):
        self.root = root
        self.root.title("八大行星介绍")
        self.root.geometry("650x550")
        self.root.resizable(False, False)
        self.root.configure(bg="#f0f8ff")

        # 标题
        title_label = tk.Label(
            root, text="太阳系八大行星介绍",
            font=("微软雅黑", 20, "bold"),
            bg="#f0f8ff", fg="#2c3e50"
        )
        title_label.pack(pady=20)

        # 选择行星
        self.selected_planet = tk.StringVar()
        planet_list = list(planets.keys())
        self.selected_planet.set(planet_list[0])

        # 下拉选择框
        combo = ttk.Combobox(
            root, textvariable=self.selected_planet,
            values=planet_list, font=("微软雅黑", 13), state="readonly", width=20
        )
        combo.pack(pady=5)
        combo.bind("<<ComboboxSelected>>", self.show_info)

        # 信息展示框
        self.info_frame = tk.LabelFrame(
            root, text="行星详细信息", font=("微软雅黑", 14, "bold"),
            padx=15, pady=15, bg="#f0f8ff", fg="#34495e"
        )
        self.info_frame.pack(fill="both", expand=True, padx=30, pady=20)

        self.info_text = tk.Text(
            self.info_frame, font=("微软雅黑", 14),
            height=14, width=58, relief="solid", bd=1,
            bg="white", fg="#2c3e50"
        )
        self.info_text.pack()

        # 初始显示第一个行星
        self.show_info()

    def show_info(self, event=None):
        planet = self.selected_planet.get()
        data = planets[planet]

        # 清空文本框
        self.info_text.delete(1.0, tk.END)

        # 插入信息
        info = f"""
行星名称：{planet}

直径：{data['直径']}
质量：{data['质量']}
公转周期：{data['公转周期']}

行星特点：
{data['特点']}
"""
        self.info_text.insert(tk.END, info)


# 启动程序
if __name__ == "__main__":
    root = tk.Tk()
    app = PlanetApp(root)
    root.mainloop()
