利用Python实现随机浮动鼓励语弹窗效果

 更新时间:2025年11月19日 08:50:35   作者:码银  
本文介绍了如何使用Python实现一个随机浮动鼓励语弹窗效果,该弹窗会显示随机的鼓励语和主题,每隔1-2秒自动生成一个新的弹窗,直到用户手动关闭或按Ctrl+C退出,开发者可以自定义鼓励语和主题以满足自己的需求,感兴趣的小伙伴跟着小编一起来看看吧

准备工作:鼓励语和主题

鼓励语列表和主题配置。

  • 鼓励语列表:像“你是最棒的!”“今天也要元气满满哦!”等等。每次弹窗都会随机选一句,就像开盲盒一样。
messages = [
    "你是最棒的!",
    "今天也要元气满满哦!",
    "记得多喝水呀~",
    "一切都会好起来",
    "你真的超厉害!",
    "加油,别放弃!",
    "休息一下吧~",
    "你值得被喜欢",
    "今天也辛苦了!",
    "未来可期呀!"
]
  • 主题配置:这里面有各种不同风格的主题,包括背景颜色(bg)、文字颜色(fg)、按钮颜色(btn)和图标(icon)。每次弹窗都会随机选一个主题🌈。
themes = [
    {"bg": "#fff0f3", "fg": "#e63946", "btn": "#e63946", "icon": "heart"},
    {"bg": "#e0f7fa", "fg": "#0077b6", "btn": "#0077b6", "icon": "star"},
    {"bg": "#f0f4f8", "fg": "#2a6fdb", "btn": "#2a6fdb", "icon": "smile"},
    {"bg": "#f8f9fa", "fg": "#6c757d", "btn": "#6c757d", "icon": "thumbsup"},
    {"bg": "#f0fff4", "fg": "#2e7d32", "btn": "#2e7d32", "icon": "leaf"},
    {"bg": "#fff8e1", "fg": "#ff8f00", "btn": "#ff8f00", "icon": "sun"}
]

弹窗的诞生:FloatingPopup类

  • 初始化窗口:这个类创建了一个顶层窗口,去掉边框,让它始终置顶,还设置了一点点透明效果,就像一个梦幻的小泡泡🫧。
def __init__(self, master=None):
    self.window = tk.Toplevel(master)
    self.window.overrideredirect(True) 
    self.window.attributes("-topmost", True) 
    self.window.attributes("-alpha", 0.95) 
  • 随机主题和位置:从主题配置里随机选一个主题,然后把弹窗随机放到屏幕的某个位置🤩。
self.theme = random.choice(themes)
self.window.configure(bg=self.theme["bg"])
self.window.geometry("220x100") 
# 随机
self.set_random_position()
  • 创建弹窗内容:弹窗里有图标、鼓励语和关闭按钮。图标用文字代替,鼓励语也是随机选的,按钮一点就可以关闭弹窗啦。
# 顶部框架
top_frame = tk.Frame(self.window, bg=self.theme["bg"])
top_frame.pack(fill="x", padx=15, pady=(10, 5))
# 图标
icon_map = {"heart": "❤️", "star": "⭐", "smile": "😊", "thumbsup": "👍", "leaf": "🍃", "sun": "☀️"}
icon_label = tk.Label(
    top_frame,
    text=icon_map[self.theme["icon"]],
    font=("Arial", 14),
    bg=self.theme["bg"],
    fg=self.theme["fg"]
)
icon_label.pack(side="left", padx=(0, 8))
# 文字
self.message = random.choice(messages)
text_label = tk.Label(
    top_frame,
    text=self.message,
    font=font.Font(family="SimHei", size=11, weight="bold"),
    bg=self.theme["bg"],
    fg=self.theme["fg"],
    wraplength=160,
    justify="left"
)
text_label.pack(side="left", fill="x", expand=True)
# 按钮
btn = tk.Button(
    self.window,
    text="知道啦",
    bg=self.theme["btn"],
    fg="white",
    bd=0,
    padx=10,
    pady=2,
    font=font.Font(size=9),
    command=self.window.destroy  
)
btn.pack(pady=(5, 10))
  • 淡入动画和自动关闭:弹窗出现的时候会有一个淡入的动画效果,就像慢慢浮现出来一样✨。20秒后自动关闭,当然你也可以手动点击按钮关闭。
def fade_in(self):
    for i in range(1, 11):
        self.window.attributes("-alpha", i / 10)
        self.window.update()
        time.sleep(0.03)
    # 20秒后自动关闭(也可手动点击关闭)
    self.window.after(20000, self.window.destroy)

循环:popup_generator函数

while循环,每隔1 - 2秒就随机生成一个新的弹窗,“弹窗雨”。

def popup_generator():
    # 循环生成弹窗
    while True:
        # 随机间隔1-2秒生成一个新弹窗
        interval = random.uniform(1, 2)
        time.sleep(interval)
        # 在主线程中创建弹窗
        root.after(0, FloatingPopup)

项目启动

最后,咱们来启动这个项目吧。先隐藏主窗口,然后启动一个线程来运行popup_generator函数,这样弹窗就会一个接一个地出现啦。如果想退出,按Ctrl + C就可以咯。

if __name__ == "__main__":
    root = tk.Tk()
    root.withdraw()  
    # 启动弹窗生成线程
    thread = threading.Thread(target=popup_generator, daemon=True)
    thread.start()
    print("弹窗已启动,按Ctrl+C退出")
    try:
        root.mainloop()
    except KeyboardInterrupt:
        root.destroy()

大家也可以自己动手改改鼓励语或者主题,让它变得更符合自己的口味哦!

到此这篇关于利用Python实现随机浮动鼓励语弹窗效果的文章就介绍到这了,更多相关Python随机浮动鼓励语弹窗内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python封装数据库连接池详解

    Python封装数据库连接池详解

    这篇文章主要介绍了Python封装数据库连接池详解,文章围绕主题相关内容展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-06-06
  • 详解在OpenCV中如何使用图像像素

    详解在OpenCV中如何使用图像像素

    像素是计算机视觉中图像的重要属性。它们是表示图像中特定空间中光的颜色强度的数值,是图像中数据的最小单位。本文将详细为大家介绍如何在OpenCV中使用图像像素,感兴趣的可以了解一下
    2022-03-03
  • 深入探究Python Numba库编译优化利器

    深入探究Python Numba库编译优化利器

    这篇文章主要为大家介绍了Python Numba库编译优化利器深入探究,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-01-01
  • Django配置Mysql数据库连接的实现

    Django配置Mysql数据库连接的实现

    本文主要介绍了Django配置Mysql数据库连接的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-03-03
  • python打印直角三角形与等腰三角形实例代码

    python打印直角三角形与等腰三角形实例代码

    这篇文章主要给大家介绍了关于python打印直角三角形与等腰三角形的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-10-10
  • pandas中ix的使用详细讲解

    pandas中ix的使用详细讲解

    这篇文章主要介绍了pandas中ix的使用详细讲解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python使用Flask-SQLAlchemy连接数据库操作示例

    Python使用Flask-SQLAlchemy连接数据库操作示例

    这篇文章主要介绍了Python使用Flask-SQLAlchemy连接数据库操作,简单介绍了flask、Mysql-Python以及Flask-SQLAlchemy的安装方法,并结合实例形式分析了基于Flask-SQLAlchemy的数据库连接相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • PyQt5每天必学之布局管理

    PyQt5每天必学之布局管理

    这篇文章主要为大家详细介绍了PyQt5每天必学之布局管理的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-04-04
  • 如何使用Python脚本实现文件拷贝

    如何使用Python脚本实现文件拷贝

    这篇文章主要介绍了如何使用Python脚本实现文件拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Dephi逆向工具Dede导出函数名MAP导入到IDA中的实现方法

    Dephi逆向工具Dede导出函数名MAP导入到IDA中的实现方法

    这篇文章主要介绍了Dephi逆向工具Dede导出函数名MAP导入到IDA中,通过这个脚本,我们就可以把专业dephi程序分析的结果,转移到IDA专业逆向代码分析的平台,实现联动,需要的朋友可以参考下
    2022-08-08

最新评论