import tkinter as tk from PIL import Image, ImageTk from tkinter import messagebox # 预置内容,请勿改动 def check(month, day): # 判断星座的函数 if (month == 1 and day >= 20) or (month == 2 and day <= 18): return "水瓶座♒" elif (month == 2 and day >= 19) or (month == 3 and day <= 20): return "双鱼座♓" elif (month == 3 and day >= 21) or (month == 4 and day <= 19): return "白羊座♈" elif (month == 4 and day >= 20) or (month == 5 and day <= 20): return "金牛座♉" elif (month == 5 and day >= 21) or (month == 6 and day <= 21): return "双子座♊" elif (month == 6 and day >= 22) or (month == 7 and day <= 22): return "巨蟹座♋" elif (month == 7 and day >= 23) or (month == 8 and day <= 22): return "狮子座♌" elif (month == 8 and day >= 23) or (month == 9 and day <= 22): return "处女座♍" elif (month == 9 and day >= 23) or (month == 10 and day <= 23): return "天秤座♎" elif (month == 10 and day >= 24) or (month == 11 and day <= 22): return "天蝎座♏" elif (month == 11 and day >= 23) or (month == 12 and day <= 21): return "射手座♐" elif (month == 12 and day >= 22) or (month == 1 and day <= 19): return "摩羯座♑" # 创建Tkinter窗口 root = tk.Tk() root.geometry('320x360') root.title("测测你的星座吧") # 创建一个标签用于显示gif动画 label_bg = tk.Label(root) label_bg.place(x=0, y=0, relwidth=1, relheight=1) #将标签放在窗口顶部并充斥整个窗口 # 加载gif图片并将每一帧存储在frames列表中 image = Image.open('星图.gif') # 打开gif图片文件 frames = [] # 用于存储gif的所有帧 try: while True: frames.append(ImageTk.PhotoImage(image)) # 将每一帧添加到frames列表中 image.seek(len(frames)) # 跳转到gif的下一帧 except EOFError: pass # 当到达gif结束时,跳出循环 # 用于更新gif动画帧的函数 def upd(idx): frame = frames[idx] # 获取当前帧 label_bg.configure(image=frame) # 更新标签中显示的帧 idx = (idx + 1) % len(frames) # 计算下一帧的索引 root.after(100, upd, idx) # 100毫秒后调用自己继续更新帧 upd(0) # 开始播放gif动画 # 创建标签和文本框 label_year = tk.Label(root, text="出生年:") label_year.grid(row=0, column=0, padx=(60,10), pady=(140,10)) entry_year = tk.Entry(root) entry_year.grid(row=0, column=1, pady=(140,10)) label_month = tk.Label(root, text="出生月:") label_month.grid(row=1, column=0, padx=(60,10), pady=10) entry_month = tk.Entry(root) entry_month.grid(row=1, column=1, pady=10) label_day = tk.Label(root, text="出生日:") label_day.grid(row=2, column=0, padx=(60,10), pady=10) entry_day = tk.Entry(root) entry_day.grid(row=2, column=1, pady=10) # 按钮点击处理函数 # 点击提交按钮时调用,它获取用户输入的出生年月日,验证输入有效性,并显示对应的星座信息 def click(): year = entry_year.get() # 获取用户输入的出生年份 month = entry_month.get() # 获取用户输入的出生月份 day = entry_day.get() # 获取用户输入的出生日 # 检查用户输入的年、月、日是否为有效的数字 if not year.isdigit() or not month.isdigit() or not day.isdigit(): messagebox.showerror("输入错误", "请输入有效的日期") month = int(month) # 将月份转换为整数 day = int(day) # 将日期转换为整数 # 检查日期是否在有效范围内 if month < 1 or month > 12 or day < 1 or day > 31: messagebox.showerror("输入错误", "请输入有效的日期") result = check(month, day) # 调用check函数获取星座信息 messagebox.showinfo("星座", f"你的星座是:{result}") # 显示用户的星座信息 # 创建提交按钮 btn = tk.Button(root, text="提交", command=click) btn.grid(row=3, columnspan=2, padx=(80,10), pady=10) # 运行Tkinter主循环 root.mainloop()