表白弹窗—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可能会引发一些问题(如线程安全问题)。
  • 如果需要更稳定的多窗口管理,建议使用tkinter的Toplevel或更高级的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()
相关推荐
cc_瀚海知行2 分钟前
工具调用 6|助手什么时候该停下来?
java·服务器·前端·人工智能·python·ai
溪语流沙17 分钟前
【Web全栈进阶】Nginx反向代理 + HTTPS:正式上线
前端·vue.js·python·nginx·https·fastapi
全栈弄潮儿24 分钟前
Python实战第11期:面向对象编程基础
后端·python·编程语言
估值探索者32 分钟前
【Python量化技术指标实战 02】MACD金叉也分强弱?手工算一次 DIF/DEA 就懂了
java·开发语言·python·股票数据·股票数据api接口
魔都吴所谓1 小时前
【我的开源】Python实现一个离线 PDF 工具箱:架构、骑缝章与踩坑记录
python·pdf·开源
用户0332126663671 小时前
Python 自动化办公:如何轻松在 PDF 中导入与导出表单数据
python
MoRanzhi12031 小时前
第5篇(上)· 使用 PyQt5 实现 2048 算法求解版:五类搜索算法内核
python·启发式算法·强化学习·搜索算法·蒙特卡洛树搜索·2048游戏·expectimax
星川皆无恙1 小时前
基于知识图谱的百科问答系统:Django + Neo4j 与实现
人工智能·python·机器学习·自然语言处理·django·知识图谱·neo4j
qq_448011161 小时前
EXEC字典沙箱仅是名字空间隔离,模块和解释器仍共享带来的坑
python
打工仔折腾 AI1 小时前
介入式脑机接口的跨尺度解码与闭环调控:从算法落地到后端工程实践
人工智能·后端·python·深度学习·算法·ai agent 实战