找回密码
 立即注册
首页 业界区 业界 用代码书写浪漫,网友直呼“太美了”! ...

用代码书写浪漫,网友直呼“太美了”!

丘奕奕 4 天前
刷短视频的时候,无意看到了一个很有意思的代码,于是本地复刻了一版升级版,分享给你。
先看效果:
1.gif

视频演示

https://www.bilibili.com/video/BV1Rb1KBdEmm
实现代码

代码分享(Python 写的):
  1. import tkinter as tk
  2. import random
  3. # 弹窗计数器(初始为0)
  4. window_count = 0
  5. # 存储所有弹窗的列表
  6. windows_list = []
  7. # 最大弹窗数量
  8. MAX_WINDOWS = 300
  9. def create_warm_tip():
  10.     global window_count  # 声明使用全局计数器
  11.     # 创建弹窗(关联主窗口 root)
  12.     window = tk.Toplevel(root)
  13.     # 获取屏幕宽高
  14.     screen_width = root.winfo_screenwidth()
  15.     screen_height = root.winfo_screenheight()
  16.     # 随机窗口位置(确保完全显示)
  17.     window_width = 250
  18.     window_height = 60
  19.     x = random.randrange(0, screen_width - window_width)
  20.     y = random.randrange(0, screen_height - window_height)
  21.     # 设置窗口标题、大小和位置
  22.     window.title('温馨提示')
  23.     window.geometry(f"{window_width}x{window_height}+{x}+{y}")
  24.     # 随机提示文字
  25.     tips = [
  26.         '多喝水哦~', '保持微笑呀', '每天都要元气满满',
  27.         '记得吃水果', '保持好心情', '好好爱自己', '我想你了',
  28.         '梦想成真', '期待下一次见面', '金榜题名',
  29.         '顺顺利利', '早点休息', '愿所有烦恼都消失',
  30.         '别熬夜', '今天过得开心嘛', '天冷了,多穿衣服'
  31.     ]
  32.     tip = random.choice(tips)
  33.     # 随机背景颜色
  34.     bg_colors = [
  35.         'lightpink', 'skyblue', 'lightgreen', 'lavender',
  36.         'lightyellow', 'plum', 'coral', 'bisque', 'aquamarine',
  37.         'mistyrose', 'honeydew', 'lavenderblush', 'oldlace'
  38.     ]
  39.     bg = random.choice(bg_colors)
  40.     # 创建标签显示文字
  41.     tk.Label(
  42.         window,
  43.         text=tip,
  44.         bg=bg,
  45.         font=('微软雅黑', 16),
  46.         width=30,
  47.         height=3
  48.     ).pack()
  49.     # 窗口置顶(新弹窗会显示在最上层)
  50.     window.attributes('-topmost', True)
  51.     # 将弹窗添加到列表
  52.     windows_list.append(window)
  53.     # 弹窗数量+1
  54.     window_count += 1
  55. def auto_pop_tips(interval=200):  # 间隔时间(毫秒),0.3秒=300毫秒
  56.     # 只有当弹窗数量小于300时,才继续创建
  57.     if window_count < MAX_WINDOWS:
  58.         create_warm_tip()  # 创建一个弹窗
  59.         # 继续定时递归调用(实现循环弹窗)
  60.         root.after(interval, auto_pop_tips, interval)
  61.     else:
  62.         # 达到300个弹窗后,打印提示并开始关闭弹窗
  63.         print(f"已达到最大弹窗数量({MAX_WINDOWS}个),开始逐个关闭")
  64.         # 延迟1秒后开始逐个关闭弹窗
  65.         root.after(1000, close_windows_one_by_one)
  66. def close_windows_one_by_one(interval=100):  # 关闭间隔时间(毫秒)
  67.     if windows_list:
  68.         # 取出并关闭最后一个弹窗
  69.         window = windows_list.pop()
  70.         window.destroy()
  71.         print(f"剩余弹窗数量: {len(windows_list)}")
  72.         # 继续关闭下一个弹窗
  73.         if windows_list:
  74.             root.after(interval, close_windows_one_by_one, interval)
  75.         else:
  76.             print("所有弹窗已关闭")
  77.             # 所有弹窗关闭后,也关闭主窗口
  78.             root.after(1000, root.destroy)
  79.     else:
  80.         print("所有弹窗已关闭")
  81.         # 所有弹窗关闭后,也关闭主窗口
  82.         root.after(1000, root.destroy)
  83. # 创建主窗口(隐藏,作为所有弹窗的父窗口)
  84. root = tk.Tk()
  85. root.withdraw()  # 隐藏主窗口
  86. # 启动定时弹窗(间隔0.3秒)
  87. auto_pop_tips(200)
  88. # 启动主循环
  89. root.mainloop()
复制代码
小结

枯燥的生活需要一点小浪漫,哪怕只是转瞬即逝的弹窗。愿你所爱皆如愿,愿你前行皆坦途。
本文已收录到我的技术小站 www.javacn.site,其中包含的内容有:Spring AI、Spring AI Alibaba、LangChain4j、Dify、Coze、N8N、智能体(AI Agent)、MCP、Function Call、RAG、向量数据库、Prompt、多模态、向量数据库、嵌入模型、AI 常见面试问题等内容。
   

关注公众号(加好友):

            
作者:        王磊的博客        
出处:        http://vipstone.cnblogs.com/        
   

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册