利用Python制作150个随机温馨提示弹窗
引言:本文设计并实现了一个基于 Python `tkinter` 和 `threading` 模块的随机温馨弹窗程序。该程序利用多线程并发技术,在极短时间内弹出150个独立窗口,每个窗口随机显示一条温馨提示文字,并随机生成窗口位置与背景颜色。本文详细阐述了程序的架构设计、关键代码实现、多线程调度策略,并通过实验分析了其对CPU、内存及用户体验的影响。实验结果表明,该程序能有效展示多线程并发GUI的典型问题,也为系统压力测试和趣味程序开发提供了参考。
1.多线程随机温馨弹窗程序:原理、实现与系统影响分析
在图形用户界面(GUI)编程中,tkinter是Python标准库中最常用的轻量级框架。然而,tkinter 的主循环(`mainloop()`)是阻塞式的,若想同时创建多个独立窗口,则必须借助多线程技术。另一方面,在日常编程学习中,我们常需要通过一些小项目来理解线程的生命周期、资源共享以及系统负载等概念。
需要下载的模块和第三方库:
pip tkinter install
pip random install
python -m pip install time可以在Python 软件中的终端中下载,对应的安装包模块。

实现代码原理如下:
import tkinter as tk #导入一个窗口界面GPU
import random #生成随机数
import threading #导入一个多线程的模块
import time #导入一个时间模块
def show_warm_tip():
# 创建窗口
window = tk.Tk()
screen_width = window.winfo_screenwidth()
screen_height = window.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 = [
'天天开心哦~', '保持微笑呀', '每天都要元气满满', '记得多吃水果',
'保持好心情', '好好爱自己', '向前看,不要灰心', '下一站上岸', '金榜题名',
'别熬夜了', '天气冷了', '记得多穿衣', '顺顺利利', '期待下一次见面', '愿所有的烦恼都消失'
'要自信','不要悲伤',
]
tip = random.choice(tips)
# 多样的背景颜色
bg_colors = [
'lightning', 'lightblue', 'light green', 'lavender',
'light yellow', 'plum', 'coral', 'bisque','aquamarine','mistype'
'honeydew','lavender blush','old lace'
]
bg = random.choice(bg_colors)
# 创建标签显示文字
tk.Label(
window, text=tip, bg=bg,
font=('微软雅黑', 16), width=30, height=3,
).pack()
# 窗口置顶显示
window.attributes('-topmost', True)
window.mainloop()
# 创建线程列表
threads = [] #for循环里面的数值在线程里面执行。
for i in range(150): # 减少窗口数量,避免系统崩溃
t = threading.Thread(target=show_warm_tip)
threads.append(t)
time.sleep(0.005)
# 快速弹出窗口
threads[i].start()

注意:这时候有人会问怎么退出,可以点击键盘中的快捷键Windows+D快速回到桌面,然后再鼠标右键点击关闭所有窗口,又或者点开任务管理器结束进程。
2.整体架构
程序由两部分组成:
1. 单个窗口生成函数 `show_warm_tip()`:负责创建、随机化并显示一个独立窗口。
2. 主控线程:使用 `for` 循环创建150个线程,每个线程执行上述函数,并控制启动节奏。
2.1 窗口随机化机制
每个窗口在创建时随机确定以下属性:
位置:利用 `random.randrange()` 在屏幕宽度和高度范围内生成左上角坐标 `(x, y)`,确保窗口完全可见。
从包含15条不同祝福语的 `tips` 列表中随机选择一条。从预定义的13种颜色名称(如 `'lightblue'`, `'plum'`, `'bisque'` 等)中随机选取。多线程实现关键代码
```python
threads = []
for i in range(150):
t = threading.Thread(target=show_warm_tip)
threads.append(t)
time.sleep(0.005) # 每个线程启动前暂停5毫秒
threads[i].start()
threading.Thread指定目标函数为show_warm_tip。
time.sleep(0.005)用于“节流”,避免150个线程在同一瞬间全部启动,减轻系统调度压力。
3. 窗口置顶与事件循环
每个窗口通过 window.attributes('-topmost', True) 设置置顶属性,确保新窗口显示在其他应用之上。然后调用 window.mainloop() 进入各自的事件循环,独立处理用户关闭等操作。
更多推荐
所有评论(0)