From 817cf9917bfe0685aa9d48a2bb7b8a4e31aa282d Mon Sep 17 00:00:00 2001 From: guanjihuan Date: Fri, 31 Oct 2025 20:04:49 +0800 Subject: [PATCH] Create caring_messages.py --- 2025.10.31_caring_messages/caring_messages.py | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 2025.10.31_caring_messages/caring_messages.py diff --git a/2025.10.31_caring_messages/caring_messages.py b/2025.10.31_caring_messages/caring_messages.py new file mode 100644 index 0000000..0aa7cdb --- /dev/null +++ b/2025.10.31_caring_messages/caring_messages.py @@ -0,0 +1,133 @@ +""" +This code is supported by the website: https://www.guanjihuan.com +The newest version of this code is on the web page: https://www.guanjihuan.com/archives/47900 +""" + +import tkinter as tk +import random +import threading +import time + +class WarmTipApp: + def __init__(self): + self.total_windows = 150 + self.created_count = 0 + self.windows = [] + self.root = tk.Tk() + self.root.withdraw() + self.lock = threading.Lock() + + def create_window(self, is_final=False): + def _create(): + window = tk.Toplevel(self.root) + screen_width = self.root.winfo_screenwidth() + screen_height = self.root.winfo_screenheight() + + if is_final: + window_width, window_height = 300, 100 + x = (screen_width - window_width) // 2 + y = (screen_height - window_height) // 2 + bg = 'lightpink' + + frame = tk.Frame(window, bg=bg) + frame.pack(fill='both', expand=True) + + tk.Label(frame, text='我想你了', bg=bg, font=('微软雅黑', 20, 'bold'), + fg='red').place(relx=0.5, rely=0.5, anchor='center') + + window.protocol("WM_DELETE_WINDOW", lambda: self.quit_app(window)) + window.title('特别提示') + else: + window_width, window_height = 300, 100 + x = random.randint(0, max(0, screen_width - window_width)) + y = random.randint(0, max(0, screen_height - window_height)) + + tips = [ + # 健康相关 + '多喝水哦,补充水分很重要', + '记得按时吃饭,别饿肚子啦', + '久坐了要起来活动活动哦', + '晚上别熬夜,早点休息呀', + '今天也要记得吃水果呀', + '天气变凉了,注意添衣服', + '保持良好作息,身体才会棒', + '累了就歇一歇,别硬撑呀', + + # 情绪与心态 + '保持微笑呀,你笑起来很好看', + '每天都要元气满满哦', + '保持好心情,好运会降临', + '不管怎样,好好爱自己最重要', + '别给自己太大压力,慢慢来', + '遇到不开心的事,记得跟我说', + '今天过得开心吗?要多笑笑呀', + '烦恼都会过去的,别太在意', + + # 祝福与期待 + '愿你每天都有小确幸', + '梦想一定会成真的', + '期待下一次见面呀', + '祝你事事顺顺利利', + '愿你被世界温柔以待', + '今天也要加油呀,你最棒', + '无论在哪,都有人惦记着你', + '愿所有美好都如期而至', + + # 生活细节 + '出门记得带钥匙和手机呀', + '雨天记得带伞,别淋湿了', + '开车要注意安全,慢慢来', + '记得给家里打个电话呀', + '有空多出去走走,晒晒太阳', + '今天也要认真生活呀', + '记得整理房间,心情会变好' + ] + bg_colors = ['lightpink', 'skyblue', 'lightgreen', 'lavender', 'lightyellow', 'plum', 'coral', 'bisque', 'aquamarine', 'mistyrose'] + + tip = random.choice(tips) + bg = random.choice(bg_colors) + + frame = tk.Frame(window, bg=bg) + frame.pack(fill='both', expand=True) + + tk.Label(frame, text=tip, bg=bg, font=('微软雅黑', 16), + fg='black').place(relx=0.5, rely=0.5, anchor='center') + + window.title('温馨提示') + self.windows.append(window) + + window.geometry(f'{window_width}x{window_height}+{x}+{y}') + window.attributes('-topmost', True) + + if not is_final: + with self.lock: + self.created_count += 1 + if self.created_count == self.total_windows: + threading.Thread(target=self.close_all_windows, daemon=True).start() + + self.root.after(0, _create) + + def close_all_windows(self): + time.sleep(0.5) + for window in self.windows[:]: + self.root.after(0, window.destroy) + time.sleep(0.01) + self.windows.clear() + self.root.after(0, lambda: self.create_window(is_final=True)) + + def quit_app(self, window): + window.destroy() + self.root.quit() + + def start(self): + def _create_all(): + for _ in range(self.total_windows): + self.create_window() + time.sleep(0.1) + + threading.Thread(target=_create_all, daemon=True).start() + self.root.mainloop() + +if __name__ == "__main__": + app = WarmTipApp() + app.start() \ No newline at end of file