当前位置: 首页 > wzjs >正文

广东省网站设计与开发考研最靠谱的培训机构

广东省网站设计与开发,考研最靠谱的培训机构,学习做网站的网站,网站建设的工期拖延如何解决系列文章 序号直达链接Tkinter1Python李峋同款可写字版跳动的爱心2Python跳动的双爱心3Python蓝色跳动的爱心4Python动漫烟花5Python粒子烟花Turtle1Python满屏飘字2Python蓝色流星雨3Python金色流星雨4Python漂浮爱心5Python爱心光波①6Python爱心光波②7Python满天繁星8Pyth…

跳动的爱心

系列文章

序号直达链接
Tkinter
1Python李峋同款可写字版跳动的爱心
2Python跳动的双爱心
3Python蓝色跳动的爱心
4Python动漫烟花
5Python粒子烟花
Turtle
1Python满屏飘字
2Python蓝色流星雨
3Python金色流星雨
4Python漂浮爱心
5Python爱心光波①
6Python爱心光波②
7Python满天繁星
8Python五彩气球
9Python白色飘雪
10Python七彩花朵
11Python 3D星空
12Python大雪纷飞
13Python一闪一闪亮星星
14Python爱心泡泡
15Python爱心射线
16Python圣诞礼物
17Python礼物圣诞树
18Python浪漫星空
19Python飞舞蝙蝠
20Python万圣礼物
21Python蓝色飘雪
Pygame
1Python跨年烟花
2Python炫酷烟花
3Python黑客帝国字母雨
敬请期待……

写在前面

Python语言实现蓝色跳动的爱心的完整代码。

技术需求

  1. Tkinter库:用于创建图形用户界面(GUI)应用程序。tkinter是Python内置的库,用于构建窗口、画布和交互组件。在这个代码中,Tk类用于创建主窗口,Canvas类用于绘制图形。

  2. 数学函数和坐标计算

    • 爱心形状的计算:通过数学公式绘制爱心的形状。使用了sincos函数来计算爱心的坐标,并根据参数shrink_ratio来缩放图形的大小。
    • 随机扩散和散点效果:使用了对数函数和随机数生成技术(例如random.uniformrandom.choice)来模拟爱心的边缘扩散和中心扩散效果,使得爱心在每帧渲染时看起来更加动态和生动。
    • 力学模拟:通过力学模型计算坐标的变化,以模拟爱心的扩散和收缩效果。
  3. 图形绘制

    • 点的动态变化:每一帧渲染时,通过更新爱心的坐标,创建一种动态效果,使得爱心不断变化,产生扩散和收缩的效果。
    • 创建矩形:在render方法中,使用create_rectangle方法在画布上绘制矩形,表示爱心的每个点。矩形的大小和位置随着每帧的计算不断变化。
  4. 动画效果:通过main.after()方法,每隔160毫秒更新一次帧,从而实现平滑的动画效果。after方法用于定时调用draw函数,不断地渲染新的一帧,达到动画的效果。

  5. 界面布局

    • 屏幕居中:通过winfo_screenwidth()winfo_screenheight()方法获取屏幕的宽度和高度,再计算窗口的起始位置,使得窗口在屏幕中央显示。
    • 文字显示:使用Label组件在画布上显示文字,并且通过place方法将其定位在窗口的中央。

完整代码

import tkinter as tk
import tkinter.messagebox
import random
from math import sin, cos, pi, log
from tkinter.constants import *width = 888
height = 500
heartx = width / 2
hearty = height / 2
side = 11
heartcolor = "skyblue"  # 爱心颜色,可修改
word = "I Love You!"  # 想要写的字,可修改# 爱心类
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 = 1000self.generate_frame = generate_framefor 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))@staticmethoddef 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 - dydef 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_pointsdef 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)……

代码分析

这段代码使用了 tkinter 库来创建一个动态的爱心图案,并在屏幕上显示带有动态效果的“我爱你”字样,以下是对这段代码的详细分析。

1. 导入所需的库

  • tkinter 用于创建图形用户界面(GUI)。
  • random 用于生成随机数,主要用于控制爱心图案的扩散效果。
  • math 中的 sincospilog 用于数学计算,生成爱心形状和扩散效果。
  • tkinter.constants 包含了 CENTER 等常量,用于控制控件的对齐方式。

2. 全局变量定义

  • widthheight: 定义画布的大小。
  • heartxhearty: 爱心的中心坐标。
  • side: 用于定义爱心形状的缩放比例。
  • heartcolor: 爱心的颜色。
  • word: 要显示的文本内容。

3. Heart 类的定义

Heart 类是主要的核心,用来生成和管理爱心的坐标点,并计算每一帧的动态效果。

  • 在 __init__ 方法中,build() 方法生成初始的爱心形状的坐标点,calc() 方法计算每一帧的动态效果,generate_frame 控制总的帧数。
  • self._points:存储生成的爱心图案的原始点。
  • self._edge_diffusion_points:存储边缘扩散的点。
  • self._center_diffusion_points:存储中心扩散的点。
  • self.all_points:存储每一帧的所有点,用于动态渲染。

4. build() 方法

  • build 方法用于生成一定数量的爱心坐标点。通过随机选择角度 t,使用 heart_function(t) 计算出坐标 (x, y),并将其加入 _points 集合中。

5. scatter_inside() 和 shrink() 方法

  • scatter_inside(x, y):用于生成坐标点的散布效果,模拟点在爱心内部随机扩散的效果。
  • shrink(x, y):用于将坐标点向爱心的中心收缩,模拟爱心的聚焦效果。

6. calc_position() 方法

  • calc_position(x, y, ratio):根据每一帧的动画计算坐标点的位移,使用一个参数 ratio 来控制动画的流畅度。

7. calc() 方法

  • calc() 方法用于生成每一帧的动态坐标,包含了爱心外部的扩散效果、边缘扩散、中心扩散等效果。通过 random.uniform() 随机生成颜色变化和点的位置。

8. render() 方法

  • render() 方法根据当前帧数 render_frame 渲染出每一帧的爱心图案。通过 create_rectangle() 在画布上绘制一个小矩形来表示每个动态点。

9. heart_function() 方法

  • heart_function(t):生成爱心形状的基本坐标,通过参数 t 控制点的分布,并根据 shrink_ratio 来调整爱心的大小。

10. curve() 方法

  • curve(p):生成一个周期性的曲线函数,用于控制动态效果的平滑度。

11. draw() 方法

  • draw():这是一个递归的函数,每隔 160 毫秒调用一次,用来更新动画的每一帧。

12. love() 主函数

  • love():这是程序的入口函数。它初始化了 Tkinter 窗口,设置了窗口的位置和大小,创建了一个画布(Canvas),然后创建了 Heart 对象,并启动了 draw() 函数进行动画渲染。

这段代码使用了 tkinter 创建一个动画效果,绘制了一个动态的爱心图案,并在其上显示“我爱你”字样。代码的核心部分是 Heart 类,它负责生成和计算爱心的形状和每一帧的动态效果。通过随机散布、扩散、收缩等效果,使得爱心看起来富有动态感和生命力。

写在后面

我是一只有趣的兔子,感谢你的喜欢。 

http://www.dtcms.com/wzjs/446369.html

相关文章:

  • 本机iis发布网站后台管理win7优化配置的方法
  • 阜蒙县自治区建设学校网站友情链接seo
  • 免备案空间网站备案重庆百度总代理
  • 自行车网站模板西安seo整站优化
  • 四川成都现在可以去吗优化培训课程
  • editplus怎么创网站百度电话查询
  • 办公室工作绩效 网站建设广州seo关键词优化费用
  • 网站设计步骤是什么营销型网站有哪些
  • 网站建设基本目标独立站建站平台
  • 如何更换网站新域名百度手机助手下载2021新版
  • 企微scrm收费seo3
  • 如何在社交网站上做视频推广方案青岛网站seo分析
  • erp仓库管理系统山东服务好的seo公司
  • b2c网站模版设计公司取名字大全集
  • 塘沽做网站的公司谷歌推广怎么样
  • 葫芦岛网站制作网站设计制作教程
  • 漯河专业做网站的公司济南网站建设
  • 做兼职在什么网站上找贵州seo技术查询
  • 做外贸的女生现状阿里巴巴怎么优化关键词排名
  • 网站建设中技术程序百度大数据官网
  • 网站开发助理是做什么的怎么样引流加微信
  • 网站ui设计师招聘搜索引擎优化的方式
  • 和优网站建设西安网页设计
  • 一个服务器怎么做两个网站上海好的网络推广公司
  • 手机版网站模板网络营销推广计划
  • 智慧政务网站怎么做免费建站有哪些
  • 瑞安做网站建设哪家好东莞网站建设制作
  • B2C购物网站建设目标广州最新消息
  • 广东网站建设公司电话seo的培训课程
  • css网站开发教程视频网站推广软件排名