一、用tkinter实现一个实现烟花的程序


import tkinter as tk
from PIL import Image, ImageTk
from time import time, sleep
from random import choice, uniform, randint
from math import sin, cos, radians
colors = ['red', 'blue', 'yellow', 'white', 'green', 'orange', 'purple', 'seagreen', 'indigo', 'cornflowerblue']
class fireworks:def __init__(self, cv, idx, total, explosion_speed, x=0., y=0., vx=0., vy=0., size=2., color='red', lifespan=2, **kwargs):self.id = idx# 烟花绽放 x 轴self.x = x# 烟花绽放 x 轴self.y = yself.initial_speed = explosion_speed# 外放 x 轴速度self.vx = vx# 外放 y 轴速度self.vy = vy# 绽放的粒子数self.total = total# 已停留时间self.age = 0# 颜色self.color = color# 画布self.cv = cvself.cid = self.cv.create_oval(x - size, y - size, x + size, y + size,fill=self.color)self.lifespan = lifespan# 更新数据def update(self, dt):self.age += dt# 粒子膨胀if self.alive() and self.expand():move_x = cos(radians(self.id * 360 / self.total)) * self.initial_speedmove_y = sin(radians(self.id * 360 / self.total)) * self.initial_speedself.cv.move(self.cid, move_x, move_y)self.vx = move_x / (float(dt) * 1000)# 膨胀到最大下落elif self.alive():move_x = cos(radians(self.id * 360 / self.total))self.cv.move(self.cid, self.vx + move_x, self.vy + 0.5 * dt)self.vy += 0.5 * dt# 过期移除elif self.cid is not None:cv.delete(self.cid)self.cid = None# 定义膨胀效果的时间帧def expand(self):return self.age <= 1.5# 检查粒子是否仍在生命周期内def alive(self):return self.age <= self.lifespandef ignite(cv):t = time()# 烟花列表explode_points = []wait_time = randint(10, 100)# 爆炸的个数numb_explode = randint(6, 10)for point in range(numb_explode):# 爆炸粒子列表objects = []# 爆炸 x 轴x_cordi = randint(50, 550)# 爆炸 y 轴y_cordi = randint(50, 150)speed = uniform(0.5, 1.5)size = uniform(0.5, 3)color = choice(colors)# 爆炸的绽放速度explosion_speed = uniform(0.2, 1)# 爆炸的粒子数半径total_particles = randint(10, 50)for i in range(1, total_particles):r = fireworks(cv, idx=i, total=total_particles, explosion_speed=explosion_speed, x=x_cordi, y=y_cordi,vx=speed, vy=speed, color=color, size=size,lifespan=uniform(0.6, 1.75))# 添加进粒子列表里objects.append(r)# 把粒子列表添加到烟花列表explode_points.append(objects)total_time = .0# 在 1.8 秒时间帧内保持更新while total_time < 1.8:# 让画面暂停 0.01ssleep(0.01)# 刷新时间tnew = time()t, dt = tnew, tnew - t# 遍历烟花列表for point in explode_points:# 遍历烟花里的粒子列表for item in point:# 更新时间item.update(dt)# 刷新页面cv.update()total_time += dtroot.after(wait_time, ignite, cv)if __name__ == "__main__":root = tk.Tk()# 绘制一个画布cv = tk.Canvas(root, height=400, width=600)# 背景图image = Image.open("D001.jpg")photo = ImageTk.PhotoImage(image)# 在画板上绘制一张图片cv.create_image(0, 0, image=photo, anchor='nw')cv.pack()root.protocol(colors)root.after(100, ignite, cv)# 生成窗口root.mainloop()

二、实现效果

python语言:烟花效果实现相关推荐

  1. Python实现烟花效果,祝大家2021年,牛年大吉。

    自从WX更新版本之后,烟花.炸弹等表情火了. 新年快到了,为了庆祝最后一天搬砖,学习一下用Python实现烟花效果. 代码如下: import tkinter as tk from time impo ...

  2. C语言用循环写出新年祝福语图案,非常漂亮的新年祝福!C语言实现漂亮的烟花效果...

    本文实例为大家分享了C语言实现漂亮的烟花效果展示的具体代码,供大家参考,具体内容如下 程序名称:祝福烟花,祝福朋友 编译环境:VC++6.0 && easyx(立冬版) #includ ...

  3. python语言玫瑰花_python 实现漂亮的烟花,樱花,玫瑰花

    显着无聊收集了下用python绘制烟花,绘制樱花,烟花+樱花,飘零雪花,玫瑰花的python绘制代码,可以来练手什么的哦. 同时python实现八音符,坦克大战,贪吃蛇,FlappyBird等都可以参 ...

  4. C语言实现漂亮的烟花效果,非常漂亮的新年祝福!C语言实现漂亮的烟花效果

    本文实例为大家分享了C语言实现漂亮的烟花效果展示的具体代码,供大家参考,具体内容如下 程序名称:祝福烟花,祝福朋友 编译环境:VC++6.0 && easyx(立冬版) #includ ...

  5. 祝福烟花程序设计c语言,非常漂亮的新年祝福!C语言实现漂亮的烟花效果

    本文实例为大家分享了C语言实现漂亮的烟花效果展示的具体代码,供大家参考,具体内容如下 程序名称:祝福烟花,祝福朋友 编译环境:VC++6.0 && easyx(立冬版) #includ ...

  6. python画烟花_python烟花效果的代码实例

    天天敲代码的朋友,有没有想过代码也可以变得很酷炫又浪漫?今天就教大家用Python模拟出绽放的烟花,工作之余也可以随时让程序为自己放一场烟花秀. 这个有趣的小项目并不复杂,只需一点可视化技巧,100余 ...

  7. python烟花效果的代码实例|CSDN创作打卡

    python烟花效果的代码实例 一.整体概念梳理 二.基本知识:用Python和Tkinter设计烟花 三.使用Tkinter模拟 四.全部代码 一.整体概念梳理 在本篇文章里小编给大家整理的是关于p ...

  8. python烟花表白引大火_代码实现女孩子表白烟花效果~让你快速撩妹!

    原标题:代码实现女孩子表白烟花效果~让你快速撩妹! 效果图 实现代码 String path = request.getContextPath(); String basePath = request ...

  9. python炫酷烟花表白源代码,用python画烟花的代码

    大家好,小编为大家解答python绘制烟花特定爆炸效果的问题.很多人还不知道python炫酷烟花表白源代码,现在让我们一起来看看吧! 1.放烟花的代码 放烟花的代码相关内容如下: 烟花其实可以看成由一 ...

  10. 动态语言的灵活性是把双刃剑 -- 以Python语言为例

    本文有些零碎,总题来说,包括两个问题: (1)可变对象(最常见的是list dict)被意外修改的问题, (2)对参数(parameter)的检查问题. 这两个问题,本质都是因为动态语言(动态类型语言 ...

最新文章

  1. wpf 多线程处理同步数据_一文带你理解多线程的实际意义和优势
  2. 微信 php 接口 函数,PHP的json_encode函数应用到微信接口有关问题(include \uxxxx will create fail)...
  3. 【C 语言】数组 ( 多维数组本质 | 步长角度 理解 多维数组本质 )
  4. Java 线程的 wait 和 notify 的神坑
  5. ElasticSearch学习,请先看这一篇(win_Elasticsearch)
  6. 牛客小白月赛12 J 月月查华华的手机 (序列自动机模板题)
  7. C++ istringstream重新绑定和处理另一个字符串
  8. 数据中台和业务中台的区别
  9. 等级考试(四):二级C++---回首往昔考试历程
  10. mysql中dint_mysql常用操作——数据库和表的操作1(共2页)
  11. 【附干货】卸载CAD后将注册表清理干净的方法及步骤
  12. cpolar——安全的内网穿透工具
  13. matlab powf,科学网—MZDDE中操作数更正 - 张凯元的博文
  14. 晚上的笔记:p2p vod
  15. 糖尿病性视网膜病变分级诊断
  16. 数字IC设计入门方法与资料大全
  17. 手机芯片份额证明苹果跃升,华为腰斩
  18. 实现labelme批量json_to_dataset方法(anaconda)
  19. 英语兔音标学习之双元音
  20. 自动气象站的主要功能是什么?

热门文章

  1. 机器学习笔记:logistic regression
  2. 文巾解题 46. 全排列
  3. 深度学习核心技术精讲100篇(六十)-深度学习分类算法之神经网络
  4. 关于ubuntu的root密码问题
  5. Java 中15种锁的介绍:公平锁,可重入锁,独享锁,互斥锁,乐观锁,分段锁,自旋锁等等...
  6. lucene源码分析(4)Similarity相似度算法
  7. Servlet 工作原理解析--转载
  8. LESSON 10.110.210.3 SSE与二分类交叉熵损失函数二分类交叉熵损失函数的pytorch实现多分类交叉熵损失函数
  9. 机器学习算法基础(基础机器学习课程)——第一天
  10. 【大数据风控体系】理想大数据风控体系