1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
| import tkinter as tk import random
window_count = 0 MAX_WINDOWS = 300 POP_INTERVAL_MS = 300 AUTO_CLOSE_MIN = 3000 AUTO_CLOSE_MAX = 5000
TIPS = [ '多喝热水哦~', '保持微笑呀', '好好休息一下吧', '今天也要元气满满~', '吃点水果补补维C', '天冷了,别忘了加衣服!', '喝杯热奶茶放松一下~', '再坚持一下,马上就放假啦!', '午休时间到,眯一会儿吧', '有点困就去洗个脸,提提神~', '别忘了多喝水!', '晚安,做个好梦', '出门记得带伞☂️', '别总对自己太苛刻啦', '看看窗外,阳光真好呀 ☀️',
'再难也要坚持,未来会感谢现在的你', '考研加油!', '代码敲不动了?先喝口水再继续!', '写完这一页就去休息吧~', '出错了没关系,Debug 也是成长的一部分', '你已经比昨天更厉害啦!', '慢慢来,别急,稳一点就好', '成功不是偶然,而是坚持的结果', '天道酬勤!继续努力!', '别怕考不完,还有我陪你~', '自律给你自由 💪', '程序员也需要睡眠~', '保持热爱,奔赴山海', '先搞懂这一行代码,你就赢了', '思考中… 这也是进步的一种~',
'嘿嘿,我又来啦~', '再看我一眼嘛 🥺', '我可是在后台默默守护你哦~', '摸摸头,不许不开心!', '神秘力量正在给你好运 ✨', '窗口太多啦?这是幸福的暴击!', '点我也没用,我只是个提示窗 😆', '今天吃了什么好吃的?', '发呆也是一种小确幸~', '给你一份虚拟拥抱 🤗', '努力的人运气都不会太差', '加载好运中… 💫', '你笑起来真好看~', '摸鱼要适度哦~', '心情不好就去听首歌吧~' ]
BG_COLORS = [ 'lightpink', 'skyblue', 'lightgreen', 'lavender', 'lightyellow', 'plum', 'coral', 'bisque', 'aquamarine', 'mistyrose', 'honeydew', 'lavenderblush', 'oldlace' ]
def create_warm_tip(): """ 创建一个随机位置、随机颜色、随机提示语的弹窗。 弹窗会在 AUTO_CLOSE_MIN..AUTO_CLOSE_MAX 毫秒后自动关闭。 """ global window_count
if window_count >= MAX_WINDOWS: return
window = tk.Toplevel(root)
window._closed_flag = False
screen_width = root.winfo_screenwidth() screen_height = root.winfo_screenheight()
window_width = 250 window_height = 60
x = random.randrange(0, max(1, screen_width - window_width)) y = random.randrange(0, max(1, screen_height - window_height))
window.title('温馨提示') window.geometry(f"{window_width}x{window_height}+{x}+{y}")
tip = random.choice(TIPS) bg = random.choice(BG_COLORS)
label = tk.Label( window, text=tip, bg=bg, font=('微软雅黑', 12), width=30, height=3, wraplength=230, justify='center' ) label.pack(expand=True, fill='both')
window.attributes('-topmost', True)
window_count += 1
def safe_close(): nonlocal window global window_count if getattr(window, '_closed_flag', False): return window._closed_flag = True try: window.destroy() except Exception: pass window_count = max(0, window_count - 1)
window.protocol("WM_DELETE_WINDOW", safe_close)
auto_close_ms = random.randint(AUTO_CLOSE_MIN, AUTO_CLOSE_MAX) window.after(auto_close_ms, safe_close)
def auto_pop_tips(interval=POP_INTERVAL_MS): """ 循环调度创建弹窗(使用 root.after 实现定时递归调用)。 当 window_count 达到 MAX_WINDOWS 时会暂停创建。 """ if window_count < MAX_WINDOWS: create_warm_tip() root.after(interval, auto_pop_tips, interval) else: print(f"已达到最大弹窗数量({MAX_WINDOWS} 个),自动暂停弹窗创建")
root = tk.Tk() root.withdraw()
auto_pop_tips(POP_INTERVAL_MS)
root.mainloop()
|