Python打造美观的桌面温馨提醒弹窗

Python打造美观的桌面温馨提醒弹窗

功能亮点

  • 🎨 美观的UI设计:采用现代化配色方案,柔和而不刺眼
  • 🎯 随机位置显示:每次出现在屏幕不同位置,避免视觉疲劳
  • 💫 多样化内容:丰富的提示语和emoji图标
  • ⏱️ 自动管理:几秒后自动关闭,不干扰工作
  • 🖱️ 交互便捷:支持点击关闭,用户体验良好

源码如下:

python 复制代码
import random
import time
import tkinter as tk
from tkinter import ttk
import os

# 抑制libpng警告
os.environ['TK_SILENCE_DEPRECATION'] = '1'


def create_beautiful_tip():
	# 创建窗口
	window = tk.Toplevel()

	# 获取屏幕宽高
	screen_width = window.winfo_screenwidth()
	screen_height = window.winfo_screenheight()

	# 窗口尺寸和位置
	window_width = 300
	window_height = 120
	x = random.randint(100, screen_width - window_width - 100)
	y = random.randint(100, screen_height - window_height - 100)

	# 窗口设置
	window.geometry(f"{window_width}x{window_height}+{x}+{y}")
	window.resizable(False, False)
	window.attributes('-topmost', True)

	# 颜色方案
	bg_colors = [
		{'bg': '#FFE4E6', 'fg': '#BE123C', 'accent': '#FB7185'},
        {'bg': '#F0F9FF', 'fg': '#0369A1', 'accent': '#0EA5E9'},
        {'bg': '#F0FDF4', 'fg': '#15803D', 'accent': '#22C55E'},
        {'bg': '#FEF7CD', 'fg': '#854D0E', 'accent': '#EAB308'},
        {'bg': '#FAF5FF', 'fg': '#7C3AED', 'accent': '#A855F7'},
	]
	scheme = random.choice(bg_colors)

	# 设置窗口背景
	window.configure(bg=scheme['bg'])

	# 提示文字
	tips = [
		'💧 记得多喝水哦~', '😊 保持微笑,好运自然来', '✨ 今天也要元气满满!',
		'🍎 多吃水果身体好', '🌞 保持好心情最重要', '💝 好好爱自己呀',
		'💌 有人在想你哦~', '🎯 梦想一定会成真', '🤗 期待下一次见面',
		'🌈 一切都会顺顺利利', '🌙 早点休息别熬夜', '🍀 今天过得开心吗?',
		'🧥 天冷了,记得添衣', '📚 学习工作要劳逸结合', '🎵 听首歌放松一下吧',
		'🌿 出去走走,呼吸新鲜空气', '💪 你是最棒的!', '🎨 保持创造力',
		'🤝 记得联系老朋友', '🍫 适当奖励自己', '🌺 闻闻花香,心情变好'
	]
	tip = random.choice(tips)

	# 创建内容
	# 图标
	icons = ['💕', '✨', '🌟', '🎀', '🌷', '🌸', '🍀']
	icon_label = tk.Label(
		window,
		text=random.choice(icons),
		bg=scheme['bg'],
		fg=scheme['accent'],
		font=('Arial', 20)
	)
	icon_label.place(x=20, y=30)

	# 提示文字
	tip_label = tk.Label(
		window,
		text=tip,
		bg=scheme['bg'],
		fg=scheme['fg'],
		font=('微软雅黑', 12),
		wraplength=200,
		justify='left'
	)
	tip_label.place(x=60, y=30)

	# 关闭按钮
	close_btn = tk.Button(
		window,
		text='关闭',
		bg=scheme['accent'],
		fg='white',
		font=('微软雅黑', 9),
		command=window.destroy,
		relief='flat',
		bd=0
	)
	close_btn.place(x=window_width - 60, y=window_height - 30, width=50, height=25)

	# 5秒后自动关闭
	window.after(5000, window.destroy)


def main():
	# 创建主窗口但不显示
	root = tk.Tk()
	root.withdraw()

	# 创建多个提示窗口
	for i in range(300):  # 创建5个窗口
		create_beautiful_tip()
		root.update()  # 更新GUI
		time.sleep(0.5)  # 间隔0.5秒

	# 退出程序
	root.after(100000, root.destroy)
	root.mainloop()


if __name__ == '__main__':
	main()

代码解析

1. 环境设置与导入

python 复制代码
import random
import time
import tkinter as tk
import os

os.environ['TK_SILENCE_DEPRECATION'] = '1'

这里我们导入了必要的库,并设置环境变量来抑制Tkinter可能产生的libpng警告。

2. 弹窗创建函数

create_beautiful_tip() 函数是程序的核心,负责创建单个提示窗口:

python 复制代码
def create_beautiful_tip():
    window = tk.Toplevel()
    # 获取屏幕尺寸并计算随机位置
    screen_width = window.winfo_screenwidth()
    screen_height = window.winfo_screenheight()
    # ... 窗口设置代码

我们使用Toplevel()创建新窗口,而不是Tk(),这样可以在一个主程序下创建多个窗口。

3. 美观的配色方案

python 复制代码
color_schemes = [
    {'bg': '#FFE4E6', 'fg': '#BE123C', 'accent': '#FB7185'},  # 粉色系
    {'bg': '#F0F9FF', 'fg': '#0369A1', 'accent': '#0EA5E9'},  # 蓝色系
    # ... 更多配色
]
scheme = random.choice(color_schemes)

我们定义了几组协调的配色方案,每次随机选择一组,使每个窗口都有独特的视觉效果。

4. 内容布局

python 复制代码
# 图标
icon_label = tk.Label(
    window,
    text=random.choice(icons),
    bg=scheme['bg'],
    fg=scheme['accent'],
    font=('Arial', 20)
)
icon_label.place(x=20, y=30)

# 提示文字
tip_label = tk.Label(
    window,
    text=tip,
    bg=scheme['bg'],
    fg=scheme['fg'],
    font=('微软雅黑', 12),
    wraplength=200,
    justify='left'
)
tip_label.place(x=60, y=30)

使用place几何管理器精确定位图标和文字,确保布局整齐美观。

5. 自动关闭机制

python 复制代码
window.after(5000, window.destroy)

使用Tkinter的after方法设置5秒后自动关闭窗口,避免窗口一直占用屏幕空间。

运行效果

运行程序后,屏幕上会依次出现5个美观的提示窗口,每个窗口:

  • 显示随机选择的温馨话语
  • 使用随机配色方案
  • 出现在屏幕随机位置
  • 5秒后自动消失
  • 可随时点击关闭按钮手动关闭

自定义建议

你可以根据自己的喜好进行以下自定义:

  1. 修改提示内容 :编辑tips列表,添加你自己的提示语
  2. 调整配色 :在color_schemes中添加或修改配色方案
  3. 更改显示时间 :修改window.after(5000, ...)中的5000毫秒值
  4. 调整窗口数量 :修改range(5)中的数字来控制窗口数量
  5. 添加动画效果:可以尝试添加淡入淡出等动画效果

技术要点

  • 使用Tkinter创建GUI界面
  • 使用Toplevel创建多个窗口
  • 使用place进行精确布局
  • 使用after实现定时功能
  • 随机化增强用户体验

总结

这个小小的Python程序展示了如何使用Tkinter创建美观实用的桌面应用。它不仅是一个温馨的提醒工具,也是学习Python GUI编程的好例子。你可以在此基础上继续扩展,比如添加设置界面、数据库支持、网络功能等,打造更加强大的个人助手应用。

相关推荐
明月_清风20 分钟前
FastAPI 从入门到实战:3 分钟构建高性能异步 API
后端·python·fastapi
笨拙的老猴子26 分钟前
[特殊字符] Java GC机制详解:G1、ZGC、Shenandoah全面解析与版本演进对比
java·开发语言
bellus-27 分钟前
ubuntu26测试win10的ollama大模型性能
python
水木流年追梦28 分钟前
大模型入门-Reward 奖励模型训练
开发语言·python·算法·leetcode·正则表达式
JavaWeb学起来28 分钟前
Python学习教程(六)数据结构List(列表)
数据结构·python·python基础·python教程
liuyunshengsir41 分钟前
PyTorch 动态量化(Dynamic Quantization)
人工智能·pytorch·python
电子云与长程纠缠1 小时前
UE5制作六边形包裹球体效果
开发语言·python·ue5
砍材农夫1 小时前
物联网 基于netty构建mqtt协议规范(遗嘱与保留消息)
java·开发语言·物联网·netty
DFT计算杂谈1 小时前
KPROJ编译教程
java·前端·python·算法·conda
froginwe111 小时前
Python3 迭代器与生成器
开发语言