Python创意编程:用Tkinter制作随机暖心弹窗应用
在编程世界中,Python的Tkinter库不仅能创建实用的桌面应用程序,还能用来制作一些有趣的小工具。本文将详细介绍如何使用Tkinter制作一个随机弹出暖心提示的桌面应用,为日常生活增添一丝温馨。
项目概述
这个Python应用会在屏幕上随机位置弹出小窗口,显示各种暖心提示语,背景颜色也会随机变化。应用会自动生成弹窗,直到达到预设的最大数量(300个)后自动停止。
技术栈
- Python 3.x
- Tkinter(Python标准GUI库)
- 随机数生成
运行效果

完整代码实现
import tkinter as tk
import random
# 弹窗计数器(初始为0)
window_count = 0
# 最大弹窗数量
MAX_WINDOWS = 300
def create_warm_tip():
global window_count # 声明使用全局计数器
# 创建弹窗(关联主窗口 root)
window = tk.Toplevel(root)
# 获取屏幕宽高
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# 随机窗口位置(确保完全显示)
window_width = 250
window_height = 60
x = random.randrange(0, screen_width - window_width)
y = random.randrange(0, screen_height - window_height)
# 设置窗口标题、大小和位置
window.title('温馨提示')
window.geometry(f"{window_width}x{window_height}+{x}+{y}")
# 随机提示文字
tips = [
'多喝水哦~', '保持微笑呀', '每天都要元气满满',
'记得吃水果', '保持好心情', '好好爱自己', '我想你了',
'梦想成真', '期待下一次见面', '金榜题名',
'顺顺利利', '早点休息', '愿所有烦恼都消失',
'别熬夜', '今天过得开心嘛', '天冷了,多穿衣服',"记得想我~!"
,"永远爱你~","每天都要开开心心哒~","公主殿下~",
"工作/学习再忙,也要记得休息","快出来接收我的爱心光波!biu biu~","拜托,你超酷的!","今天也要全力以赴哦!",
"风里雨里,我在这里等你"," 你是我藏在云层里的月亮","你笑起来真好看,像春天的花一样"
]
tip = random.choice(tips)
# 随机背景颜色
bg_colors = [
'lightpink', 'skyblue', 'lightgreen', 'lavender',
'lightyellow', 'plum', 'coral', 'bisque', 'aquamarine',
'mistyrose', 'honeydew', 'lavenderblush', 'oldlace'
]
bg = random.choice(bg_colors)
# 创建标签显示文字
tk.Label(
window,
text=tip,
bg=bg,
font=('微软雅黑', 16),
width=30,
height=3
).pack()
# 窗口置顶(新弹窗会显示在最上层)
window.attributes('-topmost', True)
# 弹窗数量+1
window_count += 1
def auto_pop_tips(interval=300): # 间隔时间(毫秒),0.3秒=300毫秒
# 只有当弹窗数量小于300时,才继续创建
if window_count < MAX_WINDOWS:
create_warm_tip() # 创建一个弹窗
# 继续定时递归调用(实现循环弹窗)
root.after(interval, auto_pop_tips, interval)
else:
# 达到300个弹窗后,打印提示并停止
print(f"已达到最大弹窗数量({MAX_WINDOWS}个),自动暂停")
# 创建主窗口(隐藏,作为所有弹窗的父窗口)
root = tk.Tk()
root.withdraw() # 隐藏主窗口
# 启动定时弹窗(间隔0.3秒)
auto_pop_tips(300)
# 启动主循环
root.mainloop()
代码详解
1. 导入库和全局变量
import tkinter as tk
import random
# 弹窗计数器(初始为0)
window_count = 0
# 最大弹窗数量
MAX_WINDOWS = 300
tkinter:Python的标准GUI库,用于创建窗口应用random:用于生成随机数和随机选择window_count:跟踪当前已创建的弹窗数量MAX_WINDOWS:限制最大弹窗数量,防止无限弹出
2. 创建弹窗函数
create_warm_tip()函数是应用的核心功能:
def create_warm_tip():
global window_count
window = tk.Toplevel(root)
- 使用
global关键字声明使用全局计数器 tk.Toplevel(root)创建新的顶级窗口,关联到主窗口
3. 窗口位置随机化
# 获取屏幕宽高
screen_width = root.winfo_screenwidth()
screen_height = root.winfo_screenheight()
# 随机窗口位置(确保完全显示)
window_width = 250
window_height = 60
x = random.randrange(0, screen_width - window_width)
y = random.randrange(0, screen_height - window_height)
# 设置窗口标题、大小和位置
window.title('温馨提示')
window.geometry(f"{window_width}x{window_height}+{x}+{y}")
winfo_screenwidth()和winfo_screenheight()获取屏幕尺寸- 随机生成x和y坐标,确保窗口完全显示在屏幕内
geometry()方法设置窗口大小和位置
4. 随机提示和背景色
# 随机提示文字
tips = [
'多喝水哦~', '保持微笑呀', '每天都要元气满满',
# ... 更多提示语
]
tip = random.choice(tips)
# 随机背景颜色
bg_colors = [
'lightpink', 'skyblue', 'lightgreen', 'lavender',
# ... 更多颜色
]
bg = random.choice(bg_colors)
random.choice()从列表中随机选择一个元素- 提供了丰富的暖心提示语和柔和的背景颜色
5. 创建标签和窗口属性
# 创建标签显示文字
tk.Label(
window,
text=tip,
bg=bg,
font=('微软雅黑', 16),
width=30,
height=3
).pack()
# 窗口置顶(新弹窗会显示在最上层)
window.attributes('-topmost', True)
tk.Label()创建文本标签,设置字体、背景色等属性pack()方法将标签放置到窗口中attributes('-topmost', True)确保窗口显示在最顶层
6. 自动弹窗机制
def auto_pop_tips(interval=300):
if window_count < MAX_WINDOWS:
create_warm_tip()
root.after(interval, auto_pop_tips, interval)
else:
print(f"已达到最大弹窗数量({MAX_WINDOWS}个),自动暂停")
- 使用递归和
after()方法实现定时功能 - 每次调用前检查是否达到最大弹窗数量
interval=300表示300毫秒(0.3秒)的间隔
7. 主程序初始化
# 创建主窗口(隐藏,作为所有弹窗的父窗口)
root = tk.Tk()
root.withdraw() # 隐藏主窗口
# 启动定时弹窗(间隔0.3秒)
auto_pop_tips(300)
# 启动主循环
root.mainloop()
root.withdraw()隐藏主窗口,只显示弹窗mainloop()启动Tkinter事件循环
功能特点
- 随机位置:每个弹窗出现在屏幕不同位置
- 多样提示:丰富的暖心提示语库
- 多彩背景:随机变化的柔和背景色
- 数量控制:自动停止机制防止无限弹窗
- 窗口置顶:确保弹窗始终可见
- 定时触发:可调节的弹窗频率
应用场景
- 桌面宠物:作为桌面小助手提供温馨提醒
- 情绪调节:在压力大时提供正能量
- 浪漫惊喜:为特别的人制造小惊喜
- 编程教学:学习Tkinter和事件编程的实例
扩展思路
这个基础应用可以进一步扩展:
- 添加音效:弹窗时播放提示音
- 用户交互:点击弹窗有特殊反应
- 主题切换:不同的提示语主题包
- 时间调度:在特定时间段弹出
- 网络功能:从网络获取每日暖心语录
总结
通过这个简单的Tkinter应用,我们不仅学习了GUI编程的基本概念,还创造了一个有趣且实用的桌面工具。Python的简洁语法和Tkinter的易用性使得即使是初学者也能快速实现功能丰富的桌面应用。
这种创意编程项目展示了编程不仅是解决实际问题工具,也可以是表达情感和创造乐趣的媒介。希望这个项目能激发你更多的编程灵感!

4万+

被折叠的 条评论
为什么被折叠?



