表白弹窗—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()
相关推荐
双叶83626 分钟前
(Python)文件储存的认识,文件路径(文件储存基础教程)(Windows系统文件路径)(基础教程)
开发语言·windows·python
枫昕柚1 小时前
python
开发语言·python
木头左1 小时前
自动驾驶领域中的Python机器学习
python·机器学习·自动驾驶
Dxy12393102161 小时前
Python Requests-HTML库详解:从入门到实战
开发语言·python·html
seasonsyy1 小时前
2.安装CUDA详细步骤(含安装截图)
python·深度学习·环境配置·cuda
写点什么啦1 小时前
一键修复ipynb,Jupyter Notebook损坏文件
ide·python·jupyter
fishwheel1 小时前
Android:Reverse 实战 part 2 番外 IDA python
android·python·安全
测试19982 小时前
cmake应用:集成gtest进行单元测试
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
淦暴尼2 小时前
银行客户流失预测分析
python·深度学习·算法
那雨倾城3 小时前
PiscCode使用OpenCV实现漂浮方块特效
python·opencv