表白弹窗—python

1. 导入模块

python 复制代码
import tkinter as tk
import random
import threading
import time
  • tkinter:Python的标准GUI库,用于创建图形用户界面。
  • random:用于生成随机数。
  • threading:用于多线程编程,允许程序同时运行多个线程。
  • time:用于控制时间相关的操作,如sleep

2. dow()函数

python 复制代码
def dow():
    window = tk.Tk()
    width=window.winfo_screenwidth()
    height=window.winfo_screenheight()
    a=random.randrange(0,width)
    b=random.randrange(0,height)
    window.title('520快乐')
    window.geometry("200x50"+"+"+str(a)+"+"+str(b))
    tk.Label(window,
        text='我喜欢你!',    # 标签的文字
        bg='Red',     # 背景颜色
        font=('楷体', 15),     # 字体和字体大小
        width=15, height=2  # 标签长宽
        ).pack()    # 固定窗口位置
    window.mainloop()
  • 这个函数用于创建一个弹出窗口。
  • window = tk.Tk():创建一个主窗口对象。
  • window.winfo_screenwidth()window.winfo_screenheight():获取屏幕的宽度和高度。
  • random.randrange(0,width)random.randrange(0,height):生成窗口位置的随机坐标(a, b)
  • window.title('520快乐'):设置窗口标题为"520快乐"。
  • window.geometry("200x50"+"+"+str(a)+"+"+str(b)):设置窗口大小为200x50,并放置在随机位置(a, b)
  • tk.Label:创建一个标签控件,显示文字"我喜欢你!",背景为红色,字体为楷体,大小为15,宽度15,高度2。
  • pack():将标签打包到窗口中。
  • window.mainloop():进入主事件循环,显示窗口。

3. 多线程创建窗口

python 复制代码
threads = []
for i in range(100):#需要的弹框数量
    t = threading.Thread(target=dow)
    threads.append(t)
    time.sleep(0.1)
    threads[i].start()
  • threads = []:创建一个空列表来存储线程对象。
  • for i in range(100):循环100次,创建100个窗口。
  • threading.Thread(target=dow):创建一个线程,目标函数是dow
  • threads.append(t):将线程对象添加到列表中。
  • time.sleep(0.1):每次循环后暂停0.1秒,控制窗口弹出的速度。
  • threads[i].start():启动线程,执行dow函数。

4. 代码功能总结

  • 这段代码会创建100个弹出窗口,每个窗口显示"我喜欢你!"的文字。
  • 窗口的位置是随机的,覆盖整个屏幕。
  • 使用多线程技术,每个窗口在一个独立的线程中运行,避免阻塞主线程。
  • 窗口之间弹出的间隔为0.1秒。

5. 注意事项

  • 这段代码会快速创建大量窗口,可能导致系统资源紧张或界面卡顿。
  • tkinter的主循环mainloop()通常在主线程中运行,多线程中使用tkinter可能会引发一些问题(如线程安全问题)。
  • 如果需要更稳定的多窗口管理,建议使用tkinterToplevel或更高级的GUI框架(如PyQt)。
  • 代码中的520快乐是中文网络用语,"520"谐音"我爱你",常用于表达爱意。

6.完整代码

python 复制代码
import tkinter as tk
import random
import threading
import time
def dow():
    window = tk.Tk()
    width=window.winfo_screenwidth()
    height=window.winfo_screenheight()
    a=random.randrange(0,width)
    b=random.randrange(0,height)
    window.title('520快乐')
    window.geometry("200x50"+"+"+str(a)+"+"+str(b))
    tk.Label(window,
        text='我喜欢你!',    # 标签的文字
        bg='Red',     # 背景颜色
        font=('楷体', 15),     # 字体和字体大小
        width=15, height=2  # 标签长宽
        ).pack()    # 固定窗口位置
    window.mainloop()
 
threads = []
for i in range(100):#需要的弹框数量
    t = threading.Thread(target=dow)
    threads.append(t)
    time.sleep(0.1)
    threads[i].start()
相关推荐
AI视觉网奇1 天前
json 可视化 2025 coco json
python·1024程序员节
mit6.8241 天前
[nanoGPT] ChatGPT 的 LLM 的全栈实现 | 快速上手
python
DKunYu1 天前
2.1线性回归
pytorch·python·深度学习·1024程序员节
大飞记Python1 天前
实战分享:一键自动化下载指定版本的Chrome及Chromedriver(附Python源码)
chrome·python·自动化
程序员杰哥1 天前
如何使用Postman做接口自动化测试及完美的可视化报告?
自动化测试·软件测试·python·测试工具·jenkins·postman·1024程序员节
老歌老听老掉牙1 天前
参数曲线切向量与叉乘向量的精确计算与分析
python·sympy·1024程序员节
Cherry Zack1 天前
FastAPI 入门指南 :基础概念与核心特性
开发语言·python·fastapi·1024程序员节
言德斐1 天前
Python Web框架深度对比:Django vs Flask vs FastAPI(含优缺点与选型策略)
前端·python·django
开心-开心急了1 天前
Flask入门教程——李辉 第5章: 数据库 关键知识梳理
笔记·后端·python·flask·1024程序员节
CodeCraft Studio1 天前
国产化Excel开发组件Spire.XLS教程:在Python中将Pandas DataFrame导出到Excel的详细教程
python·excel·pandas