利用python实现的弹窗冬日祝福(无需安装额外库)

  • 时间:2025-11-08 02:10 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:       代码是基于 Python 的 tkinter库开发的 “温暖提示弹窗” 程序,功能是在屏幕上批量生成带有暖心话语的随机弹窗,营造温馨的视觉效果。 一、核心功能与设计思路 程序的核心目标是通过大量随机样式的弹窗,展示温暖提示语(如天气保暖、生活关怀等),给用户带来视觉上的温馨感。设计上采用了 “随机性” 增强趣味性:弹窗的大小、位置、颜色、

       代码是基于 Python 的 tkinter库开发的 “温暖提示弹窗” 程序,功能是在屏幕上批量生成带有暖心话语的随机弹窗,营造温馨的视觉效果。

一、核心功能与设计思路

程序的核心目标是通过大量随机样式的弹窗,展示温暖提示语(如天气保暖、生活关怀等),给用户带来视觉上的温馨感。设计上采用了 “随机性” 增强趣味性:弹窗的大小、位置、颜色、文字内容等均随机生成,同时加入淡入动画提升体验。

二、代码结构与关键组件

代码通过 WarmPopup类封装了所有功能,主要包含以下部分:

1. 初始化设置( __init__方法)
隐藏主窗口:通过 self.root.withdraw()隐藏 tkinter默认的主窗口,只显示后续生成的弹窗。提示语列表:定义了 25 条温暖提示语(如 “天气转凉啦,记得多喝热水哦~”),内容聚焦于日常关怀,减少重复概率。颜色方案:预设 12 种柔和温暖的颜色(如 #FF6B6B粉色、 #FFB86C暖黄),避免刺眼色调。字体设置:统一使用 “Microsoft YaHei”(微软雅黑),保证中文显示清晰。
2. 弹窗生成逻辑( create_popup方法)

此方法负责生成单个弹窗,包含丰富的随机化设计:

窗口样式: 随机大小:宽 180-340 像素,高 90-170 像素,避免单调。随机位置:在屏幕内随机分布(边缘预留 20 像素,防止超出屏幕)。随机透明度:透明度 0.85-1.0,增强层次感。随机背景色:从预设颜色列表中随机选择,搭配白色文字,对比清晰。 内容排版: 随机提示语:从 25 条中随机选取一条,确保内容多样。文字样式:微软雅黑字体,大小 12-16 号(加粗),自动换行( wraplength),边距留白( padx/ pady),排版更舒适。关闭按钮:统一设计为 “收到啦” 按钮,白色背景 + 弹窗同色文字,点击可关闭当前弹窗。 淡入动画:通过逐步提高透明度(从 0 到目标值的 5 步渐变),让弹窗平滑显示,提升视觉体验。
3. 批量弹窗控制( show_multiple_popups方法)
批量生成:默认生成 600 个弹窗,间隔 0.015 秒(约 15 毫秒),快速铺满屏幕。性能优化:每生成 40 个弹窗暂停 0.2 秒,避免系统资源占用过高导致卡顿。中断处理:支持 Ctrl+C手动终止程序,自动关闭所有已生成的弹窗,防止残留。
4. 程序入口( if __name__ == "__main__":
运行前提示用户:600 个弹窗可能影响性能,告知中断方式( Ctrl+C)。初始化主窗口并启动弹窗生成流程。

三、使用效果与注意事项

视觉效果:运行后屏幕会快速弹出大量大小、颜色、位置各异的弹窗,每个弹窗显示一条暖心提示,点击 “收到啦” 可关闭单个弹窗,整体风格温馨活泼。性能影响:600 个弹窗会占用较多系统资源(尤其是内存和显卡资源),低配置电脑可能出现卡顿,建议谨慎运行,或修改 count参数减少弹窗数量(如改为 50)。中断方式:若需提前结束,在运行程序的终端 / 命令行中按 Ctrl+C即可终止,避免强制关机。

总结

          这段代码通过 tkinter的 GUI 功能,结合随机化设计和简单动画,实现了 “批量温暖提示弹窗” 的效果,逻辑清晰,细节处理较为完善,适合作为趣味小程序体验。

代码实现



import tkinter as tk
from tkinter import font
import random
import time
import sys
 
 
class WarmPopup:
    def __init__(self, root):
        self.root = root
        self.root.withdraw()  # 隐藏主窗口
 
        # 温暖提示语列表(扩充至25条,减少重复)
        self.messages = [
            "天气转凉啦,记得多喝热水哦~",
            "冷空气来了,出门要加件外套呀!",
            "双手冰冰的?快去倒杯温水暖暖吧",
            "今天有点冷,要不要来杯热奶茶?",
            "注意保暖,别感冒啦,我会担心的~",
            "天气冷的时候,一杯热水就是最好的安慰",
            "记得泡个热水脚,暖暖地睡个好觉",
            "冷空气来袭,照顾好自己最重要",
            "多喝热水,让身体从里到外都暖暖的",
            "天冷了,给自己一个温暖的拥抱吧",
            "别只要风度哦,温度也很重要呀",
            "喝口热水,瞬间感觉暖和多了吧",
            "寒冷的日子里,更要好好爱自己",
            "添件衣服,喝杯热水,简单的幸福",
            "冷空气路过,记得做好保暖措施呀",
            "风大降温啦,围巾手套别忘带~",
            "一碗热汤下肚,全身都暖和啦",
            "天冷也要保持开心,心情暖才是真的暖",
            "睡前喝杯温牛奶,助眠又保暖",
            "记得关紧窗户,别让冷空气偷偷进来",
            "外面好冷呀,待在屋里最舒服啦",
            "把暖气打开,瞬间就温暖起来了",
            "天冷适合窝在沙发里看一部暖心的电影",
            "记得给家人也说一声:天冷加衣哦",
            "寒风再大,有温暖的牵挂就不冷啦"
        ]
 
        # 温暖的颜色方案(优化色调,更显柔和温暖)
        self.colors = [
            "#FF6B6B", "#FF8E8E", "#FFB86C", "#FFD166",
            "#06D6A0", "#118AB2", "#073B4C", "#9B5DE5",
            "#F72585", "#4361EE", "#FB8500", "#FFB703"
        ]
 
        # 统一使用微软雅黑字体
        self.font_family = "Microsoft YaHei"
 
    def create_popup(self):
        # 创建新窗口
        popup = tk.Toplevel(self.root)
        popup.overrideredirect(False)  # 带边框,可关闭
 
        # 随机大小(增加尺寸范围多样性)
        width = random.randint(180, 340)
        height = random.randint(90, 170)
        popup.geometry(f"{width}x{height}")
 
        # 随机位置(确保在屏幕内,边缘留出空间)
        screen_width = self.root.winfo_screenwidth()
        screen_height = self.root.winfo_screenheight()
        x = random.randint(20, screen_width - width - 20)
        y = random.randint(20, screen_height - height - 20)
        popup.geometry(f"+{x}+{y}")
 
        # 随机透明度(略提高透明度下限,增强层次感)
        alpha = random.uniform(0.85, 1.0)
        popup.attributes("-alpha", alpha)
 
        # 随机背景色
        bg_color = random.choice(self.colors)
        popup.configure(bg=bg_color)
 
        # 统一微软雅黑字体,随机大小(保持可读性)
        font_size = random.randint(12, 16)
        custom_font = font.Font(family=self.font_family, size=font_size, weight="bold")
 
        # 随机选择提示语
        message = random.choice(self.messages)
 
        # 添加文本(优化排版)
        label = tk.Label(
            popup,
            text=message,
            bg=bg_color,
            fg="white",
            font=custom_font,
            wraplength=width - 30,  # 增加边距,避免文字贴边
            padx=15,
            pady=15,
            justify="center"
        )
        label.pack(expand=True, fill="both")
 
        # 添加关闭按钮(统一风格)
        close_btn = tk.Button(
            popup,
            text="收到啦",
            bg="white",
            fg=bg_color,
            font=font.Font(family=self.font_family, size=10, weight="bold"),
            command=popup.destroy,
            relief=tk.RAISED,
            padx=10,
            pady=2
        )
        close_btn.pack(pady=8)
 
        # 优化淡入动画(更快更流畅)
        for i in range(1, 6):
            popup.attributes("-alpha", alpha * i / 5)
            popup.update()
            time.sleep(0.008)  # 加速淡入过程
 
        return popup
 
    def show_multiple_popups(self, count=600, delay=0.015):  # 进一步增加数量,加快速度
        popups = []
        try:
            for i in range(count):
                # 每显示40个弹窗增加短暂延迟,平衡性能
                if i % 40 == 0 and i > 0:
                    time.sleep(0.2)
 
                popup = self.create_popup()
                popups.append(popup)
                time.sleep(delay)
 
                # 保持主循环响应
                self.root.update_idletasks()
                self.root.update()
 
        except KeyboardInterrupt:
            print("用户中断操作")
            for popup in popups:
                popup.destroy()
            self.root.destroy()
            sys.exit()
 
 
if __name__ == "__main__":
    print("温馨提示:600个弹窗可能会影响系统性能,正在准备显示...")
    print("如果需要提前结束,可按 Ctrl+C")
 
    root = tk.Tk()
    root.title("温暖提示")
 
    # 全部使用微软雅黑字体,弹窗数量600个,间隔0.015秒
    warm_popup = WarmPopup(root)
    warm_popup.show_multiple_popups(count=600, delay=0.015)
 
    root.mainloop()

效果截图

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】Java从入门到精通:2025最新版系统学习路线与实战指南(2025-11-08 02:14)
【系统环境|】域名到手,如何开启网站搭建之旅?2025最全指南!(2025-11-08 02:13)
【系统环境|】Windows部署Dify+Ollama十大致命坑!技术小白自救指南(2025-11-08 02:13)
【系统环境|】在linux上安装ollama(2025-11-08 02:12)
【系统环境|】Kubernetes 存储学习全景指南(2025-11-08 02:12)
【系统环境|】Android语言基础教程(57)Android基本组件之计时器:Android计时器:用对了爽到飞起,用错了卡到崩溃!(2025-11-08 02:11)
【系统环境|】Node.js v16 版本安装(2025-11-08 02:11)
【系统环境|】Windows 系统安装 Composer 详细教程(2025-11-08 02:10)
【系统环境|】利用python实现的弹窗冬日祝福(无需安装额外库)(2025-11-08 02:10)
【系统环境|】Node.JS 版本管理工具 Fnm 安装及配置(Windows)(2025-11-08 02:09)
手机二维码手机访问领取大礼包
返回顶部