import tkinter as tk
from tkinter import ttk,messagebox
from datetime import datetime

# 暗黑高颜值UI（和生日提醒器同款黑色主题）
class ConstellationAnimal:
    def __init__(self,root):
        self.root=root
        self.root.title("🔮 星座生肖查询器")
        self.root.geometry("420x340")
        self.root.resizable(False,False)
        self.root.configure(bg="#2b2b2b")
        self.style=ttk.Style()
        self.style.theme_use("clam")
        self.style.configure("TButton",font=("微软雅黑",10),padding=5,background="#444444",foreground="#f0f0f0")

        # 生肖列表
        self.animal_list=["鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"]
        # 星座数据
        self.star_data=[
            ("摩羯座",12,22,1,19),("水瓶座",1,20,2,18),("双鱼座",2,19,3,20),
            ("白羊座",3,21,4,19),("金牛座",4,20,5,20),("双子座",5,21,6,21),
            ("巨蟹座",6,22,7,22),("狮子座",7,23,8,22),("处女座",8,23,9,22),
            ("天秤座",9,23,10,23),("天蝎座",10,24,11,22),("射手座",11,23,12,21)
        ]
        self.create_ui()

    def create_ui(self):
        tk.Label(self.root,text="🎂 请输入出生年月日",bg="#2b2b2b",fg="white",font=("微软雅黑",12)).pack(pady=15)
        frame=tk.Frame(self.root,bg="#2b2b2b")
        frame.pack()

        tk.Label(frame,text="年",bg="#2b2b2b",fg="white").grid(row=0,column=0)
        self.year=ttk.Entry(frame,width=6)
        self.year.grid(row=0,column=1,padx=3)

        tk.Label(frame,text="月",bg="#2b2b2b",fg="white").grid(row=0,column=2)
        self.month=ttk.Entry(frame,width=4)
        self.month.grid(row=0,column=3,padx=3)

        tk.Label(frame,text="日",bg="#2b2b2b",fg="white").grid(row=0,column=4)
        self.day=ttk.Entry(frame,width=4)
        self.day.grid(row=0,column=5,padx=3)

        ttk.Button(self.root,text="🔍 查询星座+生肖",command=self.check_data).pack(pady=20)
        self.result=tk.Label(self.root,text="结果将在这里显示",bg="#383838",fg="#cccccc",width=45,height=6,relief="solid")
        self.result.pack()

    # 判断生肖
    def get_animal(self,y):
        idx=(y-4)%12
        return self.animal_list[idx]

    # 判断星座
    def get_star(self,m,d):
        for name,m1,d1,m2,d2 in self.star_data:
            if (m==m1 and d>=d1) or (m==m2 and d<=d2):
                return name
        return "未知"

    def check_data(self):
        try:
            y=int(self.year.get())
            m=int(self.month.get())
            d=int(self.day.get())
        except:
            messagebox.showerror("错误","请输入纯数字日期！")
            return
        if not (1<=m<=12 and 1<=d<=31):
            messagebox.showerror("错误","日期格式非法！")
            return
        sx=self.get_animal(y)
        xz=self.get_star(m,d)
        res=f"✅ 查询结果：\n生肖：{sx}\n星座：{xz}"
        self.result.config(text=res,fg="#88d8f0")

if __name__ == "__main__":
    root=tk.Tk()
    app=ConstellationAnimal(root)
    root.mainloop()
