iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >【爱心上面可以加字】Python爱心代码,简单又好看
  • 670
分享到

【爱心上面可以加字】Python爱心代码,简单又好看

python 2023-09-26 16:09:36 670人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录 前言 一、爱心代码展示  二、完整代码 前言 最近都快要被动态爱心刷屏了,今天跟大家带来不一样的爱心代码,可以在爱心中央写下你想要的字! 可以用python来实现它,会Python的朋友们赶快收藏起来。 一、爱心代码展

目录

前言

一、爱心代码展示

 二、完整代码



前言

最近都快要被动态爱心刷屏了,今天跟大家带来不一样的爱心代码,可以在爱心中央写下你想要的字!
可以用python来实现它,会Python的朋友们赶快收藏起来。


一、爱心代码展示
 

代码运行之后就是这样的啦,简直是表白,道歉神器!

 二、完整代码

复杂粘贴格式容易出问题,大家记得要改正一下哦。
加字的代码在后面,大家替换成自己想要的文字就可以啦!

import randomfrom math import sin, cos, pi, logfrom tkinter import *canvas_WIDTH = 640CANVAS_HEIGHT = 480CANVAS_CENTER_X = CANVAS_WIDTH / 2CANVAS_CENTER_Y = CANVAS_HEIGHT / 2IMAGE_ENLARGE = 11HEART_COLOR = "#FF99CC"def center_window(root, width, height):    screenwidth = root.winfo_screenwidth()  # 获取显示屏宽度    screenheight = root.winfo_screenheight()  # 获取显示屏高度    size = '%dx%d+%d+%d' % (width, height, (screenwidth - width) /2, (screenheight - height) / 2)  # 设置窗口居中参数    root.geometry(size)  # 让窗口居中显示def heart_function(t, shrink_ratio: float = IMAGE_ENLARGE):    x = 16 * (sin(t) ** 3)    y = -(13 * cos(t) - 5 * cos(2 * t) - 2 * cos(3 * t) - cos(4 * t))    # 放大    x *= shrink_ratio    y *= shrink_ratio    # 移到画布中央    x += CANVAS_CENTER_X    y += CANVAS_CENTER_Y    return int(x), int(y)def scatter_inside(x, y, beta=0.15):    ratio_x = - beta * log(random.random())    ratio_y = - beta * log(random.random())    dx = ratio_x * (x - CANVAS_CENTER_X)    dy = ratio_y * (y - CANVAS_CENTER_Y)    return x - dx, y - dydef shrink(x, y, ratio):    force = -1 / (((x - CANVAS_CENTER_X) ** 2 +                  (y - CANVAS_CENTER_Y) ** 2) ** 0.6)    dx = ratio * force * (x - CANVAS_CENTER_X)    dy = ratio * force * (y - CANVAS_CENTER_Y)    return x - dx, y - dydef curve(p):    return 2 * (2 * sin(4 * p)) / (2 * pi)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 - CANVAS_CENTER_X) ** 2 +                      (y - CANVAS_CENTER_Y) ** 2) ** 0.520)        dx = ratio * force * (x - CANVAS_CENTER_X) + random.randint(-1, 1)        dy = ratio * force * (y - CANVAS_CENTER_Y) + 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))        self.all_points[generate_frame] = all_points        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=HEART_COLOR)def draw(main: Tk, render_canvas: Canvas, render_heart: Heart, render_frame=0):    render_canvas.delete('all')    render_heart.render(render_canvas, render_frame)    main.after(160, draw, main, render_canvas, render_heart, render_frame + 1)if __name__ == '__main__':    root = Tk()    root.title("爱心")    center_window(root, CANVAS_WIDTH, CANVAS_HEIGHT)  # 窗口居中显示    canvas = Canvas(root, bg='black', height=CANVAS_HEIGHT, width=CANVAS_WIDTH)    canvas.pack()    heart = Heart()    draw(root, canvas, heart)    Label(root, text="你想要替换的文字", bg="black", fg="#FF99CC", font="Helvetic 20 bold").place(        relx=.5, rely=.5, anchor=CENTER)    root.mainloop()

来源地址:https://blog.csdn.net/veratata/article/details/128428082

--结束END--

本文标题: 【爱心上面可以加字】Python爱心代码,简单又好看

本文链接: https://www.lsjlt.com/news/418662.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 【爱心上面可以加字】Python爱心代码,简单又好看
    目录 前言 一、爱心代码展示  二、完整代码 前言 最近都快要被动态爱心刷屏了,今天跟大家带来不一样的爱心代码,可以在爱心中央写下你想要的字! 可以用Python来实现它,会Python的朋友们赶快收藏起来。 一、爱心代码展...
    99+
    2023-09-26
    python
  • python动态爱心代码完整版,python动态爱心代码简单
    大家好,本文将围绕python动态爱心代码红颜不简展开说明,python动态爱心代码怎么运行是一个很多人都想弄明白的事情,想搞清楚python动态爱心代码完整版需要先了解以下几个事情。 1、python动态心形代码怎么弄 python动...
    99+
    2023-10-26
    人工智能
  • python爱心代码简单教程
    python爱心代码简单教程操作方法 1 将以上代码保存为.py文件,假设保存的文件名为 love.py (不会保存?先保存为txt文本,然后将后缀改为.py) 2 在终端(cmd命令窗口)输入python 空格 love.py的路径 回...
    99+
    2023-09-25
    python 开发语言
  • python代码爱心怎么编写简单
    可以使用 python 的 matplotlib 库绘制爱心。首先,导入 matplotlib.pyplot 并定义 x 和 y 坐标,使用参数方程生成爱心形状。然后,使用 plt.pl...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作