当前位置: 首页 > news >正文

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

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

image-20251029213449430

image-20251029213503850

image-20251029213511216

功能亮点

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

源码如下:

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 = 300window_height = 120x = 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()  # 更新GUItime.sleep(0.5)  # 间隔0.5秒# 退出程序root.after(100000, root.destroy)root.mainloop()if __name__ == '__main__':main()

代码解析

1. 环境设置与导入

import random
import time
import tkinter as tk
import osos.environ['TK_SILENCE_DEPRECATION'] = '1'

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

2. 弹窗创建函数

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

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

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

3. 美观的配色方案

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

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

4. 内容布局

# 图标
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. 自动关闭机制

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编程的好例子。你可以在此基础上继续扩展,比如添加设置界面、数据库支持、网络功能等,打造更加强大的个人助手应用。

http://www.dtcms.com/a/544689.html

相关文章:

  • 北京网站制作建设太原it培训机构
  • certbot+shell+阿里云api+k8s实现自动化更新SSL证书
  • Linux小课堂: 系统核心技能与应用总结与进阶指南
  • 前端vue项目在vscode使用插件部署到服服务器的方法
  • 使用Labelimg进行图像标注
  • 【计算机软件资格考试】软考案例分析题及解析模拟题10
  • IoTDA应用侧app开发403报错解决方案
  • 3.1 Lua代码中的元表与元方法
  • Rust——多重借用的冲突解决方案:驾驭Rust借用检查器的艺术
  • kaggle比赛与常用的dash board 3lc
  • 适配器模式:让不兼容的接口协同工作
  • Neo4j中导入.owl数据
  • 应急救援 “眼观六路”:SA/NSA 双模覆盖,偏远灾区也能实时传视频
  • 站长工具短链接生成网站中队人物介绍怎么做
  • 【Spring Boot + Spring Security】从入门到源码精通:藏经阁权限设计与过滤器链深度解析
  • 《嵌入式硬件(十七):基于IMX6ULL的温度传感器LM75a操作》
  • 用 Go 手搓一个内网 DNS 服务器:从此告别 IP 地址,用域名畅游家庭网络!
  • Rust async/await 语法糖的展开原理:从表象到本质
  • Rust 零拷贝技术:从所有权到系统调用的性能优化之道
  • 浪潮服务器装linux系统步骤
  • 视频网站服务器带宽需要多少?视频网站服务器配置要求
  • 《嵌入式硬件(十八):基于IMX6ULL的ADC操作》
  • 注册网站发财的富豪北京公司如何做网站
  • 仓颉语言异常捕获机制深度解析
  • 基于SAP.NET Core Web APP(MVC)的医疗记录管理系统完整开发指南
  • 咖啡网站建设设计规划书wordpress修改首页网址导航
  • C#WPF UI路由事件:事件冒泡与隧道机制
  • 神经网络时序预测融合宏观变量的ETF动态止盈系统设计与实现
  • 分布式Session会话实现方案
  • Java创建【线程池】的方法