import tkinter as tk
from tkinter import messagebox

# 生肖对应的年份循环（以1900年为基准，1900年是鼠年）
zodiac = ["鼠", "牛", "虎", "兔", "龙", "蛇", "马", "羊", "猴", "鸡", "狗", "猪"]
base_year = 1900  # 基准年份（鼠年）

def get_zodiac(year):
    """根据年份返回生肖"""
    # 计算偏移量，确保正数
    offset = (year - base_year) % 12
    return zodiac[offset]

def query_zodiac():
    """查询按钮的回调函数"""
    input_year = entry.get().strip()
    if not input_year:
        messagebox.showwarning("输入错误", "请输入年份！")
        return
    try:
        year = int(input_year)
    except ValueError:
        messagebox.showerror("输入错误", "请输入有效的数字年份！")
        return
    if year < 0:
        messagebox.showerror("输入错误", "年份不能为负数！")
        return
    zodiac_animal = get_zodiac(year)
    result_label.config(text=f"{year} 年是 {zodiac_animal} 年")

# 创建主窗口
root = tk.Tk()
root.title("生肖查询小程序")
root.geometry("400x200")
root.resizable(False, False)

# 设置背景色
root.configure(bg="#f0f0f0")

# 标题标签
title_label = tk.Label(root, text="生肖查询工具", font=("微软雅黑", 18, "bold"), bg="#f0f0f0", fg="#333333")
title_label.pack(pady=10)

# 输入框框架
frame = tk.Frame(root, bg="#f0f0f0")
frame.pack(pady=10)

# 提示标签
prompt_label = tk.Label(frame, text="请输入出生年份：", font=("微软雅黑", 12), bg="#f0f0f0")
prompt_label.grid(row=0, column=0, padx=5)

# 输入框
entry = tk.Entry(frame, font=("微软雅黑", 12), width=12)
entry.grid(row=0, column=1, padx=5)

# 查询按钮
query_button = tk.Button(root, text="查询生肖", command=query_zodiac, font=("微软雅黑", 12), bg="#4CAF50", fg="white", padx=10, pady=5)
query_button.pack(pady=10)

# 结果显示标签
result_label = tk.Label(root, text="", font=("微软雅黑", 14), bg="#f0f0f0", fg="#E67E22")
result_label.pack(pady=10)

# 绑定回车键
root.bind('<Return>', lambda event: query_zodiac())

# 运行主循环
root.mainloop()