分析和备注代码
import tkinter as tk
import random
blessings = [
"平安喜乐,万事顺意~",
"暴富暴美,好运连连!",
"日日开心,岁岁无忧✨",
"所求皆如愿,所行皆坦途",
"健康相伴,快乐常随",
"新的日子,满是惊喜呀",
"万事胜意,未来可期!",
"被幸福和幸运包围~",
"愿你每一天都充满阳光与欢笑",
"幸福与平安永远与你相伴相随",
"未来的日子事事顺心又如意",
"快乐常驻你的心间永不离去",
"梦想的种子终将开花与结果",
"每一天都收获喜悦与感动",
"前方道路尽是光明与坦途",
"生活如诗如画般美好绚烂",
"心中所念皆能如愿以偿",
"幸运之神永远眷顾着你",
"所有的努力都有美好回响",
"岁月温柔待你一如往昔",
"幸福像花儿一样绽放",
"每一天都充满新的希望",
"快乐时光永远与你相伴",
"生活甜甜蜜蜜美满如意",
"前程似锦一路繁花相送",
"心中永远充满爱与温暖",
"所有的美好都如期而至",
"梦想的光芒照亮前路",
"每一天都遇见更好自己",
"幸福如泉水般涌流不息",
"快乐像繁星点点闪烁",
"生活处处是美好风景",
"未来充满无限可能期待",
"时光温柔岁月静好如初",
"幸福永远围绕在你身边",
"快乐每一天都不打烊",
"生活充满惊喜与感动",
"梦想的翅膀带你去飞翔",
"每一天都是新的开始",
"幸福像春风一样温暖",
"快乐时光永远不散场",
"生活如歌般美妙动听",
"未来之路越走越宽广",
"心中永远保持那份热忱",
"所有的等待都值得期许",
"梦想终将照进现实里",
"每一天都充满正能量",
"幸福如影随形伴左右",
"快乐永远不打折降价",
"生活像彩虹般绚丽多彩",
"前方的风景更加迷人",
"时光不负有心人期待",
"幸福永远在你手心里",
"快乐每一天都在升级",
"生活充满阳光与温暖",
"未来的你一定会感谢现在",
"梦想终将在彼岸花开",
"每一天都比昨天更好"
]
cute_bg = [
"#FFD6E0", "#C8E6C9", "#BBDEFB", "#FFE0B2",
"#E1BEE7", "#B2EBF2", "#FFCCBC", "#DCE775"
]
cute_text = [
"#E53935", "#43A047", "#1E88E5", "#F57C00",
"#8E24AA", "#00ACC1", "#E53935", "#8BC34A"
]
decorations = ["★", "♥", "♡", "✿", "❀", "☁", "✦", "♪"]
class PopupWindow(tk.Toplevel):
def __init__(self, parent, counter):
super().__init__(parent)
self.parent = parent
self.counter = counter
self.overrideredirect(False)
self.attributes("-topmost", True)
self.width = random.randint(280, 280)
self.height = random.randint(140, 140)
self.x = random.randint(50, self.winfo_screenwidth() - self.width - 50)
self.y = random.randint(
50, self.winfo_screenheight() - self.height - 50)
self.geometry(f"{self.width}x{self.height}+{self.x}+{self.y}")
self.bg_color = random.choice(cute_bg)
self.text_color = random.choice(cute_text)
self.canvas = tk.Canvas(
self, width=self.width, height=self.height, highlightthickness=0, bg=self.bg_color)
self.canvas.pack(fill=tk.BOTH, expand=True)
self.canvas.create_rectangle(
0, 0, self.width, self.height, fill=self.bg_color, outline=self.text_color, width=2)
for pos in [(15, 15), (self.width-15, 15), (15, self.height-15), (self.width-15, self.height-15)]:
self.canvas.create_text(pos[0], pos[1], text=random.choice(
decorations), fill=self.text_color, font=("Arial", 14))
self.blessing = random.choice(blessings)
self.canvas.create_text(
self.width // 2, self.height // 2,
text=self.blessing,
font=("微软雅黑", random.randint(14, 16), "bold"),
fill=self.text_color,
justify=tk.CENTER,
width=self.width - 40
)
self.scale = 0.5
self.bounce_in()
self.after(random.randint(5000, 10000), self.destroy_and_check)
def bounce_in(self):
self.geometry(f"{self.width}x{self.height}+{self.x}+{self.y}")
def destroy_and_check(self):
self.destroy()
self.counter[0] -= 1
if self.counter[0] == 0:
self.parent.quit()
def create_popup(parent, counter):
PopupWindow(parent, counter)
def batch_popup(parent, total=20, interval=300):
counter = [total]
for i in range(total):
# 延迟执行方法
parent.after(i * interval, lambda: create_popup(parent, counter))
if __name__ == "__main__":
root = tk.Tk()
root.title("这是一个标题")
root.withdraw()
batch_popup(root, total=5, interval=250)
root.mainloop()