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

# 12星座数据
constellations = [
    "白羊座", "金牛座", "双子座", "巨蟹座", "狮子座", "处女座",
    "天秤座", "天蝎座", "射手座", "摩羯座", "水瓶座", "双鱼座"
]

# 运势素材库（随机抽取，娱乐向）
luck_levels = ["大吉", "中上", "平平", "小吉", "需要谨慎"]
advices = [
    "保持平常心，好事正在靠近",
    "适合主动沟通，会有意想不到收获",
    "今天不宜冲动做重大决定",
    "多关注身边人，珍惜当下",
    "放下焦虑，顺其自然即可",
    "适合整理计划，规划未来",
    "避免与人发生口舌之争",
    "可以尝试新事物，机遇来临",
    "不要过度怀疑自己，自信一点",
    "财运平稳，不适合大额消费"
]
colors = ["白色", "浅蓝", "粉色", "香槟金", "薄荷绿", "淡紫", "焦糖色", "银灰色"]

def get_fortune():
    """生成随机星座运势"""
    star = select_var.get()
    if star == "请选择星座":
        messagebox.showwarning("提示", "请先选择你的星座！")
        return

    luck = random.choice(luck_levels)
    lucky_num = random.randint(1, 9)
    lucky_color = random.choice(colors)
    tip = random.choice(advices)

    # 更新文本框内容
    result_text.config(state=tk.NORMAL)
    result_text.delete(1.0, tk.END)
    content = f"""【{star} 今日运势】
✨综合运势：{luck}
🔢幸运数字：{lucky_num}
🎨幸运颜色：{lucky_color}
💡今日忠告：{tip}

⚠️本运势仅供娱乐，请勿当真！
"""
    result_text.insert(tk.END, content)
    result_text.config(state=tk.DISABLED)

# ========== 创建窗口界面 ==========
root = tk.Tk()
root.title("星座运势查询｜娱乐小程序")
root.geometry("460x360")
root.resizable(False, False)

# 标题
title_label = tk.Label(root, text="✨星座今日运势✨", font=("微软雅黑", 18, "bold"), fg="#9932CC")
title_label.pack(pady=12)

# 星座选择区域
frame1 = tk.Frame(root)
frame1.pack(pady=6)
tk.Label(frame1, text="选择星座：", font=("微软雅黑",11)).pack(side=tk.LEFT,padx=5)

select_var = tk.StringVar(value="请选择星座")
combo = ttk.Combobox(frame1, textvariable=select_var, values=constellations, width=12, font=("微软雅黑",10))
combo.pack(side=tk.LEFT)

# 查询按钮
query_btn = tk.Button(root, text="查看今日运势", command=get_fortune,
                      bg="#9932CC", fg="white", font=("微软雅黑",11), relief=tk.RIDGE)
query_btn.pack(pady=10)

# 运势结果显示框
result_text = tk.Text(root, width=48, height=10, font=("微软雅黑", 10))
result_text.pack(padx=15)
result_text.config(state=tk.DISABLED)

# 底部备注
tip_label = tk.Label(root, text="温馨提示：仅供休闲娱乐，不作现实参考", font=("微软雅黑",9), fg="#666666")
tip_label.pack(pady=6)

root.mainloop()