最新Python浪漫520表白代码?

news2025/1/14 18:11:08

 前言

520是每年的5月20日,因数字“520”与“我爱你”发音相似而被许多年轻人用作表达爱意的节日。这个节日起源于中国互联网文化,逐渐传递到其他国家和地区。在这一天,情侣们通常会互送礼物、发表情、或者举行浪漫的活动来庆祝爱情。快来领取专属于程序员的浪漫吧!

表白界面

让人无法拒绝的表白界面!

程序设计  

import tkinter as tk
import tkinter.messagebox
root = tk.Tk()
root.title('❤')
root.resizable(0, 0)
root.wm_attributes("-toolwindow", 1)
screenwidth = root.winfo_screenwidth()
screenheight = root.winfo_screenheight()
widths = 300
heights = 100
x = (screenwidth - widths) / 2
y = (screenheight - heights) / 2
root.geometry('%dx%d+%d+%d' % (widths, heights, x, y))  # 设置在屏幕中居中显示
tk.Label(root, text='亲爱的,做我女朋友好吗?', width=37, font=('宋体', 12)).place(x=0, y=10)
 
 
def OK():  # 同意按钮
    root.destroy()
    # 同意后显示漂浮爱心
 
 
def NO():  # 拒绝按钮,拒绝不会退出,必须同意才可以退出哦~
    tk.messagebox.showwarning('❤', '再给你一次机会!')
 
 
def closeWindow():
    tk.messagebox.showwarning('❤', '逃避是没有用的哦')
 
 
tk.Button(root, text='好哦', width=5, height=1, command=OK).place(x=80, y=50)
tk.Button(root, text='不要', width=5, height=1, command=NO).place(x=160, y=50)
root.protocol('WM_DELETE_WINDOW', closeWindow)  # 绑定退出事件
root.mainloop()

 这段代码使用了Python的Tkinter库来创建GUI界面。在这个程序中,主要有几个组件,如下:

  1. tk.Tk():创建一个主窗口;
  2. root.title():设置窗口的标题,这里设置为’❤’;
  3. root.resizable(0,0):设置窗口大小不可调整,即禁止用户手动调整窗口大小;
  4. root.wm_attributes(“-toolwindow”, 1):设置窗口为工具窗口,即没有最大化、最小化和关闭按钮;
  5. root.geometry():设置窗口的尺寸和位置,这里设置为在屏幕中居中显示;
  6. tk.Label():创建一个标签,用于显示提示信息,这里显示的是“亲爱的,做我女朋友好吗?”;
  7. tk.Button():创建两个按钮,分别用于同意和拒绝,分别绑定了OK()和NO()两个函数;
  8. root.protocol():绑定退出事件,如果用户尝试直接关闭窗口,会弹出警告窗口提醒逃避是没有用的哦;
  9. root.mainloop():程序主循环,保持窗口不关闭。
     

总的来说,这是一个用Python的Tkinter库编写的表白程序,主要功能是显示一个窗口,问用户是否愿意成为自己的女朋友,提供了"好哦"和"不要"两个按钮让用户选择。如果用户选择同意,窗口会关闭,并且出现一个漂浮的爱心效果;如果用户选择不同意,会弹出警告窗口,提醒再给一次机会。同时,如果用户尝试直接关闭这个窗口,也会弹出警告窗口提醒逃避是没有用的哦。 

跳动的爱心

去年爆火的跳动的爱心!

主要的爱心类 

class Heart:
    def __init__(self, generate_frame=20):
        self._points = set()  # 原始爱心坐标集合
        self._edge_diffusion_points = set()  # 边缘扩散效果点坐标集合
        self._center_diffusion_points = set()  # 中心扩散效果点坐标集合
        self.all_points = {}  # 每帧动态点坐标
        self.build(2000)
        self.random_halo = 1000
        self.generate_frame = generate_frame
        for frame in range(generate_frame):
            self.calc(frame)
    def build(self, number):
        for _ in range(number):
            t = random.uniform(0, 2 * pi)
            x, y = heart_function(t)
            self._points.add((x, y))
        for _x, _y in list(self._points):
            for _ in range(3):
                x, y = scatter_inside(_x, _y, 0.05)
                self._edge_diffusion_points.add((x, y))
        point_list = list(self._points)
        for _ in range(4000):
            x, y = random.choice(point_list)
            x, y = scatter_inside(x, y, 0.17)
            self._center_diffusion_points.add((x, y))
    @staticmethod
    def calc_position(x, y, ratio):
        force = 1 / (((x - heartx) ** 2 + (y - hearty) ** 2) ** 0.520)  # 魔法参数
        dx = ratio * force * (x - heartx) + random.randint(-1, 1)
        dy = ratio * force * (y - hearty) + random.randint(-1, 1)
        return x - dx, y - dy
    def calc(self, generate_frame):
        ratio = 10 * curve(generate_frame / 10 * pi)  # 圆滑的周期的缩放比例
        halo_radius = int(4 + 6 * (1 + curve(generate_frame / 10 * pi)))
        halo_number = int(3000 + 4000 * abs(curve(generate_frame / 10 * pi) ** 2))
        all_points = []
        heart_halo_point = set()
        for _ in range(halo_number):
            t = random.uniform(0, 2 * pi)
            x, y = heart_function(t, shrink_ratio=11.6)
            x, y = shrink(x, y, halo_radius)
            if (x, y) not in heart_halo_point:
                heart_halo_point.add((x, y))
                x += random.randint(-14, 14)
                y += random.randint(-14, 14)
                size = random.choice((1, 2, 2))
                all_points.append((x, y, size))
        for x, y in self._points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 3)
            all_points.append((x, y, size))
        for x, y in self._edge_diffusion_points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 2)
            all_points.append((x, y, size))
        for x, y in self._center_diffusion_points:
            x, y = self.calc_position(x, y, ratio)
            size = random.randint(1, 2)
            all_points.append((x, y, size))
        self.all_points[generate_frame] = all_points
    def render(self, render_canvas, render_frame):
        for x, y, size in self.all_points[render_frame % self.generate_frame]:
            render_canvas.create_rectangle(x, y, x + size, y + size, width=0, fill=heartcolor)

这部分代码主要是用来产生一个爱心的形状,并将这个爱心以一种缓慢流动的方式展示在屏幕上。这里使用了一个叫Heart的类来实现这个功能。具体来说,这个类包含以下几个方法: 

  1. __init__():在Heart类初始化时,产生了一些点来组成原始的爱心形状,并扩展出边缘和中心的爱心效果,最后存储在了_points、_edge_diffusion_points、_center_diffusion_points集合中,在__init__()中还使用了calc()方法,产生和存储了动态点坐标,作为后续展示的依据;
  2. build():这个方法根据传进来的个数number,随机产生一个坐标点,并计算出由这个坐标点产生的散点点,边缘效果点和中心效果点,并将这些点加入到对应的集合中;
  3. calc_position():这个方法用来计算动态效果的点的坐标,x和y是原始的爱心点坐标,ratio是一个缩放比例,用来控制点的运动速度和方向。具体实现方式是根据魔法参数(force)计算出坐标点偏移量(dx和dy),将原始坐标减去这个偏移量后得到新坐标;
  4. calc():这个方法根据传进来的帧号(generate_frame),计算每个点运动后的坐标,位置的大小和数量等参数,产生all_points集合,用于后续窗口展示;
  5. render():这个方法用于生成窗口显示的效果。根据传进来的画布render_canvas和帧号render_frame,获取动态点(all_points)并将每个点使用create_rectangle()方法在画布上呈现出来,构成了爱心的缓慢流动效果。
     

总的来说,这部分代码实现了爱心动态效果的核心方法,通过呈现散点、边缘效果点和中心效果点,利用计算动态点的坐标,通过缓慢变化的方式构成了耐人寻味的爱心效果展示。

漂浮的爱心

当然啦,漂浮的爱心也很美!

主要的爱心类 

class Heart():    #每个爱心(爱心类)
    def __init__(self):
        self.r = ra.randint(10,15)        #爱心的半径
        self.x = ra.randint(-1000,1000)   #爱心的横坐标
        self.y = ra.randint(-500,500)     #爱心的纵坐标
        self.f = ra.uniform(-3.14,3.14)   #爱心左右移动呈正弦函数
        self.speed = ra.randint(5,10)     #爱心移动速度
        self.color = ra.choice(colors)    #爱心的颜色
        self.outline = 1                  #爱心的外框大小(可不要)
    def move(self):                    #爱心移动函数
        if self.y <= 500:            #当爱心还在画布中时
            self.y += self.speed     #设置上下移动速度
            self.x += self.speed * math.sin(self.f)    #设置左右移动速度
            self.f += 0.1            #可以理解成标志,改变左右移动的方向
        else:                        #当爱心漂出了画布时,重新生成一个爱心
            self.r = ra.randint(10,15)
            self.x = ra.randint(-1000,1000)
            self.y = -500
            self.f = ra.uniform(-3.14,3.14)
            self.speed = ra.randint(5,10)
            self.color = ra.choice(colors)
            self.outline = 1
    def draw(self):       #画爱心函数,就是用turtle画爱心
        t.pensize(self.outline)
        t.penup()
        t.color(self.color)
        t.goto(self.x, self.y)
        t.pendown()
        t.begin_fill()
        t.fillcolor('pink')
        t.setheading(120)
        t.circle(self.r, 195)
        t.fd(self.r * 2.4)
        t.lt(90)
        t.fd(self.r * 2.4)
        t.circle(self.r, 195)
        t.end_fill()

这部分代码实现了每个爱心的移动和绘制。通过定义一个Heart类,初始化时随机生成一些参数(如半径、坐标、速度、颜色等),然后定义了移动( move() )和绘制 ( draw() )这两个方法来构造每个爱心在画布中的动态效果。

在 move() 方法中,首先判断爱心是否超出画布区域,如果超出了就重新生成一个爱心。如果没有超出,就按照自己的速度上下移动,以一定周期进行左右运动。

在 draw() 方法中,通过 Turtle 库绘制爱心的形状。其中,圆的部分是用 circle() 方法画的,线的部分是用 fd() 和 lt() 方法画的。同时也设置了爱心的颜色、外框大小、填充颜色等。

通过循环调用对每个Heart对象进行 move() 和 draw() 操作,整个屏幕就会动态地形成很多爱心的漂浮效果。通过每个爱心的属性差异化和运动轨迹的分散性,构成了一种比较多彩且富有动感的效果。

满屏表白代码

谁能拒绝满屏的表白代码呢!

主要的函数 

def Love():
    root=tk.Tk()
    width=200
    height=50
    screenwidth=root.winfo_screenwidth()
    screenheight=root.winfo_screenheight()
    x=ra.randint(0,screenwidth)
    y=ra.randint(0,screenheight)
    root.title("❤")
    root.geometry("%dx%d+%d+%d"%(width,height,x,y))
    tk.Label(root,text='I LOVE YOU!',fg='white',bg='pink',font=("Comic Sans MS",15),width=30,height=5).pack()
    root.mainloop()
def Heart():
    root=tk.Tk()
    screenwidth=root.winfo_screenwidth()
    screenheight=root.winfo_screenheight()
    width=600
    height=400
    x=(screenwidth-width)//2
    y=(screenheight-height)//2
    root.title("❤")
    root.geometry("%dx%d+%d+%d"%(screenwidth,screenheight,0,0))
    tk.Label(root,text='❤',fg='pink',bg='white',font=("Comic Sans MS",500),width=300,height=20).pack()
    root.mainloop()

这个程序中定义了两个函数 Love() 和 Heart(),实现了一种表达爱意的浪漫效果。

Love() 函数实现了一个弹出窗口,窗口标题为“❤”,窗口主体是一行字“ I LOVE YOU !”。字体颜色为白色,背景颜色为粉色。窗口的位置是随机生成的,大小固定为200x50。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/927034.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity ProBuilder SetUVs 不起作用

ProBuilder SetUVs 不起作用 &#x1f41f; 需要设置face.manulUV true public static void Set01UV(this ProBuilderMesh mesh){foreach (var face in mesh.faces){face.manualUV true;//设置为手动uv}var vertices mesh.GetVertices().Select(v > v.position).ToArray(…

计算机竞赛 基于图像识别的跌倒检测算法

前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 基于图像识别的跌倒检测算法 该项目较为新颖&#xff0c;适合作为竞赛课题方向&#xff0c;学长非常推荐&#xff01; &#x1f9ff; 更多资料, 项目分享&#xff1a; https://gitee.com/dancheng-senior/…

大数据平台安全主要是指什么安全?如何保障?

大数据时代已经来临&#xff0c;各种数据充斥着我们的生活与工作。随着数据的多样性以及复杂性以及大量性&#xff0c;大数据平台诞生了。但对于大数据平台大家都不是很了解&#xff0c;有人问大数据平台安全主要是指什么安全&#xff1f;如何保障&#xff1f; 大数据平台安全…

9.阿里Sentinel哨兵

1.Sentinel Sentinel&#xff08;哨兵&#xff09;是由阿里开源的一款流量控制和熔断降级框架&#xff0c;用于保护分布式系统中的应用免受流量涌入、超载和故障的影响。它可以作为微服务架构中的一部分&#xff0c;用于保护服务不被异常流量冲垮&#xff0c;从而提高系统的稳定…

angular15 数据切换报错

解决方案 1.涉及的属性不要公用&#xff0c;只能有一个标签调用 2.settimeout setTimeout(() > { xxx //导致报错的赋值代码 }, 0);

全新红娘交友系统定制版源码/相亲交友小程序源码

全新红娘交友系统定制版源码&#xff0c;相亲交友小程序源码。定制版红娘交友平台小程序源码&#xff0c;很牛逼的东西&#xff0c;虽然是小程序&#xff0c;但是有700多M大&#xff0c;功能超级强大&#xff0c;还带聊天等功能。 下载地址&#xff1a;https://bbs.csdn.net/t…

Drools的KieSession(有状态会话)的获取,领导就说一句话,员工加班都做不完!

使用Drools规则引擎的代码&#xff0c;最简单的主要有以下几部分&#xff1a; //这一部分的连接&#xff1a;“万恶”之源的KieServices&#xff0c;获取代码就一行&#xff0c;表面代码越少里面东西就越多&#xff0c;本以为就是个简单的工厂方法&#xff0c;没想到里面弯弯绕…

Windows下编译NextCloud desktop 3.9.1

首先从官方下载源码&#xff1a; https://github.com/nextcloud/desktop&#x1f4bb; Desktop sync client for Nextcloud. Contribute to nextcloud/desktop development by creating an account on GitHub.https://github.com/nextcloud/desktop 我选择的是3.9.1的稳定版本…

工控机引领移动机器人的智能化革命!

随着制造业数字化转型的加速&#xff0c;工业4.0时代的到来&#xff0c;工业互联网逐步成为中国推进新型工业化进程的核心驱动力量。而工控机作为工业互联网领域的重要组成部分&#xff0c;已经在越来越多行业得到广泛应用。据中商情报网数据显示&#xff0c;2022年我国工业自动…

Linux CentOS7系统,抓取http协议的数据包

使用 tcpdump 命令 1.首先确认是否安装 [rootlocalhost ~]# which tcpdump /usr/bin/which: no tcpdump in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) [rootlocalhost ~]#我这里没有安装 1.1 安装 tcpdump yum install tcpdump 安装成功如下&#xf…

【Linux】进程间通信原理与Reactor模式

一、用户进程缓冲区和内核缓冲区 缓冲区的目的&#xff0c;是为了减少频繁的系统IO调用。大家都知道&#xff0c;系统调用需要保存之前的进程数据和状态等信息&#xff0c;而结束调用之后回来还需要恢复之前的信息&#xff0c;为了减少这种损耗时间、也损耗性能的系统调用&…

有趣的无限缓存OOM现象

作者&#xff1a;邹阿涛涛涛涛涛涛 想必大家都知道OOM是啥吧&#xff0c;我就不扯花里胡哨的了&#xff0c;直接进入正题。先说一个背景故事&#xff0c;我司app扫码框架用的zxing&#xff0c;在很长一段时间以前&#xff0c;做过一系列的扫码优化&#xff0c;稍微列一下跟今天…

学习ts(九)混入

对象混入 使用Object.assign()进行对象混入&#xff0c;最后的people会被识别为三种类型的联合类型 类混入 使用implement并非extnds实现混入。 属性在混入类里面定义&#xff0c;分别在类中占位&#xff0c;方法分别在类中定义&#xff0c;在混合类中占位。这告诉编译器这…

自动化的驱动力,工控机助您实现智能生产!

“智能工厂建设如火如荼&#xff0c;部分成果已经落地&#xff0c;在大规模资金投入的市场催化下&#xff0c;海尔、海信等制造企业通过智能工厂手段推进生产效率成倍增长的新闻层出不穷。在工业4.0时代&#xff0c;“中国制造2025”战略中&#xff0c;智能工厂构建都是其中不可…

激活函数总结(十九):激活函数补充(ISRU、ISRLU)

激活函数总结&#xff08;十九&#xff09;&#xff1a;激活函数补充 1 引言2 激活函数2.1 Inverse Square Root Unit &#xff08;ISRU&#xff09;激活函数2.2 Inverse Square Root Linear Unit (ISRLU)激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函…

用docker-compose搭建LNMP

docker-compose搭建LNMP 一、compose 的部署1.Docker Compose 环境安装 二、编写Docker Compose1.准备依赖文件,配置nginx2.配置mysql3.配置php4.编写docker-compose.yml5.执行6.查看 一、compose 的部署 &#xff08;1&#xff09;公司在实际的生产环境中&#xff0c;需要使用…

磁盘阵列/视频集中存储/安防监控视频智能分析平台新功能:人员聚集

人工智能技术已经越来越多地融入到视频监控领域中&#xff0c;近期我们也发布了基于AI智能视频云存储/安防监控视频AI智能分析平台的众多新功能&#xff0c;该平台内置多种AI算法&#xff0c;可对实时视频中的人脸、人体、车辆、物体等进行检测、跟踪与抓拍&#xff0c;支持口罩…

Linux上实现分片压缩及解压分片zip压缩包 - 及zip、unzip命令详解

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

LiveNVR监控流媒体Onvif/RTSP功能-支持语音对讲支持非国标摄像头SDK语音对讲GB28181级联国标平台非国标转国标语音对讲

LiveNVR支持语音对讲支持非国标摄像头SDK语音对讲GB28181级联国标平台非国标转国标语音对讲 1、确认摄像头是否支持对讲2、摄像头视频类型复合流3、通道配置SDK接入4、视频广场点击播放5、相关问题5.1、如何配置通道获取直播流&#xff1f;5.2、如何GB28181级联国标平台&#x…

AD(第四部分---网表导入及模块化布局设计)

第四部分&#xff1a;网表导入及模块化布局设计 21.导入常见报错解决方法(unknow pin及绿色报错等) 将原理图导入到PCB: 在原理图界面点击右上角设计 导出后&#xff0c;若出现如下错误&#xff0c;则说明没有0805C的电容&#xff1a; 没有电容应该怎么办呢&#xff1f;需要进…