抖音同款,Python打造浪漫弹窗,附带源码

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事件循环

功能特点

  1. 随机位置:每个弹窗出现在屏幕不同位置
  2. 多样提示:丰富的暖心提示语库
  3. 多彩背景:随机变化的柔和背景色
  4. 数量控制:自动停止机制防止无限弹窗
  5. 窗口置顶:确保弹窗始终可见
  6. 定时触发:可调节的弹窗频率

应用场景

  • 桌面宠物:作为桌面小助手提供温馨提醒
  • 情绪调节:在压力大时提供正能量
  • 浪漫惊喜:为特别的人制造小惊喜
  • 编程教学:学习Tkinter和事件编程的实例

扩展思路

这个基础应用可以进一步扩展:

  1. 添加音效:弹窗时播放提示音
  2. 用户交互:点击弹窗有特殊反应
  3. 主题切换:不同的提示语主题包
  4. 时间调度:在特定时间段弹出
  5. 网络功能:从网络获取每日暖心语录

总结

通过这个简单的Tkinter应用,我们不仅学习了GUI编程的基本概念,还创造了一个有趣且实用的桌面工具。Python的简洁语法和Tkinter的易用性使得即使是初学者也能快速实现功能丰富的桌面应用。

这种创意编程项目展示了编程不仅是解决实际问题工具,也可以是表达情感和创造乐趣的媒介。希望这个项目能激发你更多的编程灵感!

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员春至

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值