下载链接
https://pan.baidu.com/s/1GzwTp8U8HPkXg6N9dZFefA?pwd=1111
或扫码

import tkinter as tkimport sysimport random# 全局变量is_Running = True # 启动后默认持续运行window_WIDTH = 300window_HEIGHT = 150 # 调整高度适配更多文字popup_windows = [] # 存储所有弹出的窗口对象,方便统一关闭# 道歉类浪漫话语列表(可自行补充/修改)APOLOGY_MESSAGES = ["宝宝我错了🥺,原谅我好不好", "对不起嘛宝贝,我不该惹你生气的", "我的小宝贝别气啦,我给你认错啦❤️", "我知道错了,你理理我好不好,好想你", "惹你不开心是我的错,罚我一辈子宠你好不好", "宝贝对不起,我嘴笨但我真的很爱你💖", "原谅我这一次嘛,以后都听你的,绝不惹你生气", "小祖宗我错了,求抱抱求原谅😘", "我反思过了,都是我的问题,你别不开心了", "对不起宝贝,让你受委屈了,我会加倍补偿你的", "我错啦我错啦,宝宝消消气,想吃什么我都买✨", "惹你生气是我的不对,你打我骂我都行,别不理我", "我的小公主,我错了,原谅我这个笨蛋好不好", "千错万错都是我的错,宝贝原谅我吧,爱你哟", "对不起亲爱的,我不该犟嘴,你说的都对💓"”]# 丰富的随机颜色列表(柔和色系,更适配浪漫氛围)BG_COLORS = ["#FFE4E1", "#F0F8FF", "#F5F5DC", "#F5FFFA", "#F8F8FF","#F9F2F4", "#FAEBD7", "#FFEBCD", "#FFE4B5", "#FFDEAD","#E0FFFF", "#E6E6FA", "#FFF0F5", "#FFFAF0", "#F0FFF0","#F5F5F5", "#FFFAFA", "#FDF5E6", "#E8E8E8", "#D8BFD8"]def show_window():"""创建单个常规样式弹窗,文字和背景色随机"""root = tk.Toplevel() popup_windows.append(root) # 将新弹窗加入列表# 常规弹窗样式(带边框、标题栏、关闭叉号)root.attributes("-alpha", 0.9) # 保留轻微半透明,提升视觉效果# 获取屏幕尺寸,随机定位弹窗screen_w = root.winfo_screenwidth() screen_h = root.winfo_screenheight() x = random.randint(0, screen_w - window_WIDTH) y = random.randint(0, screen_h - window_HEIGHT) root.geometry(f"{window_WIDTH}x{window_HEIGHT}+{x}+{y}") root.title("宝宝,我错了") # 给常规弹窗加标题# 随机选择道歉文字和背景色random_text = random.choice(APOLOGY_MESSAGES) random_bg = random.choice(BG_COLORS)# 弹窗内容(调整字体和排版,适配常规窗口)label = tk.Label( root,text=random_text,font=("微软雅黑", 14), # 放大字体更清晰fg="#CC0033", # 固定文字为浪漫红,突出重点bg=random_bg,padx=20,pady=30,wraplength=250 # 自动换行,避免文字超出窗口) label.pack(expand=True, fill="both")def on_click(event):"""点击弹窗任意位置:仅切换位置、背景色和文字,不关闭弹窗"""new_bg = random.choice(BG_COLORS) new_text = random.choice(APOLOGY_MESSAGES) label.config(bg=new_bg, text=new_text)# 随机切换窗口位置new_x = random.randint(0, screen_w - window_WIDTH) new_y = random.randint(0, screen_h - window_HEIGHT) root.geometry(f"{window_WIDTH}x{window_HEIGHT}+{new_x}+{new_y}")# 绑定点击弹窗任意位置的事件(仅切换内容/位置,不关闭)root.bind("<Button-1>", on_click)# 绑定全局退出快捷键(关闭所有弹窗并退出程序)root.bind("<Control-Alt-q>", lambda e: force_exit()) root.bind("<Control-Alt-w>", lambda e: force_exit()) root.bind("<Control-Alt-e>", lambda e: force_exit()) root.bind("<Control-Alt-r>", lambda e: force_exit()) root.bind("<Control-Alt-c>", lambda e: force_exit())def on_close():"""点击窗口叉号时:关闭当前单个弹窗,并从列表移除"""if root in popup_windows: popup_windows.remove(root) root.destroy() # 销毁当前弹窗# 绑定窗口关闭按钮(叉号)事件:仅关闭当前弹窗root.protocol("WM_DELETE_WINDOW", on_close)def create_window_loop():"""循环创建弹窗的核心函数"""if is_Running: show_window() # 每次调用都创建新弹窗# 控制弹窗创建间隔(单位:毫秒),数值越小弹窗越快,可自行调整main_root.after(200, create_window_loop)def force_exit():"""强制关闭所有窗口并退出程序"""global is_Running is_Running = Falseprint("强制退出程序...")# 关闭所有弹出的窗口for win in popup_windows:try: win.destroy()except:pass# 关闭主窗口try: main_root.destroy()except:passsys.exit()if __name__ == "__main__":# 主窗口(完全隐藏,无任何可视化界面)main_root = tk.Tk() main_root.withdraw() # 隐藏主窗口,无任何控制器界面# 绑定全局退出快捷键(核心退出方式)main_root.bind("<Control-Alt-Q>", lambda e: force_exit()) main_root.bind("<Control-Alt-W>", lambda e: force_exit()) main_root.bind("<Control-Alt-E>", lambda e: force_exit()) main_root.bind("<Control-Alt-R>", lambda e: force_exit()) main_root.bind("<Control-Alt-C>", lambda e: force_exit())# 程序启动后直接开始疯狂弹窗,无需手动点击print("程序已启动,开始疯狂弹窗!")print("退出方式:按下 Ctrl+Alt+Q/W/E/R/C 任意一组快捷键即可退出") create_window_loop()# 启动主循环main_root.mainloop()