利用Python实现随机浮动鼓励语弹窗效果
作者:码银
本文介绍了如何使用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随机浮动鼓励语弹窗内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
