表白弹窗—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()
相关推荐
Nina_7172 小时前
第二章 prompt思维链
python·prompt
掘金安东尼2 小时前
遇见 Kiro:从“爽感写代码”到“生产级落地”
人工智能·python
偷心伊普西隆3 小时前
Python Access:删除数据库中指定的表和查询
数据库·python
Learn Beyond Limits4 小时前
Using per-item Features|使用每项特征
人工智能·python·神经网络·算法·机器学习·ai·吴恩达
哈里谢顿5 小时前
Celery Signal 类详解与实战
python
深蓝电商API5 小时前
解析动态数据:如何抓取 JavaScript 加载的 AJAX 内容
爬虫·python
2401_841495645 小时前
【计算机视觉】霍夫变换检测
图像处理·人工智能·python·opencv·算法·计算机视觉·霍夫变换
m0_741585355 小时前
Django开发环境
python·django
一粒马豆6 小时前
python+flask_socketio+pyautogui实现简易远程桌面功能
python·flask·pyautogui·flask_socketio
东方芷兰7 小时前
LLM 笔记 —— 02 大语言模型能力评定
人工智能·笔记·python·神经网络·语言模型·自然语言处理·cnn