#-*- coding: utf-8 -*-#Nola

importtkinter as tkfrom PIL importImage, ImageTkfrom time importtime, sleepfrom random importchoice, uniform,randintfrom math importsin, cos, radians## 初始化tkinter 创建根部件 必须在创建其他部件之前创建 且只有一个#root = tk.Tk()## Label部件#w = tk.Label(root, text="Hello Tkinter!")## pack告诉tkinter调整窗口大小适应所用的小部件#w.pack()#root.mainloop()#模拟重力

GRAVITY = 0.05colors= [‘red‘, ‘blue‘, ‘pink‘, ‘white‘, ‘green‘, ‘orange‘, ‘purple‘, ‘seagreen‘, ‘indigo‘, ‘cornflowerblue‘]classPart(object):"""particles 类

粒子在空中随机生成,变成一个圈,下坠,消失"""

def __init__(self, cv, idx, total, explosion_speed, x=0., y=0., vx=0., vy=0., size=2., color=‘red‘, lifespan=2, **kwargs):""":param cv: 画布

:param idx: 粒子的id

:param total: 总数

:param explosion_speed: 粒子初始速度

:param x: 粒子的横坐标

:param y: 粒子的纵坐标

:param vx: 粒子在x轴上的变化速度

:param vy: 粒子在y轴上的变化速度

:param size: 大小

:param color: 颜色

:param lifespan: 最高存在时长

:param kwargs:"""self.id=idx

self.x=x

self.y=y

self.initial_speed=explosion_speed

self.vx=vx

self.vy=vy

self.total=total

self.age=0

self.color=color

self.cv=cv

self.cid=self.cv.create_oval(

x- size, y - size, x +size,

y+ size, fill=self.color

)

self.lifespan=lifespandefupdate(self, dt):"""粒子运动函数,膨胀

:param dt:

:return:"""self.age+=dtif self.alive() andself.expand():

move_x= cos(radians(self.id*360 / self.total)) *self.initial_speed

move_y= sin(radians(self.id*360 / self.total)) *self.initial_speed#self.vy = move_y / (float(dt)*1000)

self.cv.move(self.cid, move_x, move_y)

self.vx= move_x / (float(dt) * 1000)#以自由落体坠落

elifself.alive():

move_x= cos(radians(self.id*360 /self.total))

self.cv.move(self.cid, self.vx+ move_x, self.vy + GRAVITY*dt)

self.vy+= GRAVITY *dt#移除超过最高时长的粒子

elif self.cid is notNone:

self.cv.delete(self.cid)

self.cid=Nonedefalive(self):"""检查粒子是否在最高存在时长内

:return: bool"""

return self.age <= 1.2

defexpand(self):"""定义膨胀效果时间帧

:return: bool"""

return self.age <=self.lifespandefsimulate(cv):"""循环调用保持不停

:param cv: 画布

:return:"""numb_explode= randint(6, 10)

wait_time= randint(10, 100)

explode_points=[]

t=time()#为所有模拟烟花绽放的全部粒子创建一个列表

for point inrange(numb_explode):

objects=[]

x_cordi= randint(50, 550)

y_cordi= randint(50, 150)

speed= uniform(0.5, 1.5)

size= uniform(1, 3) #随机生成一个0.5-3之间的实数

color =choice(colors)

explosion_speed= uniform(0.2, 1)

total_particals= randint(5, 50)for i in range(1, total_particals):

r= Part(cv, idx=1, total=total_particals, 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)#设置每个粒子没0.01秒更新状态 生命周期1.8秒 1.6秒存活(1.2秒绽放,0.4秒坠落,0.2秒移除)

total_time =.0#在1.8秒时间帧内保持更新

while total_time < 1.8:

sleep(0.01)

tnew=time()

t, dt= tnew, tnew -tfor point inexplode_points:for item inpoint:

item.update(dt)

cv.update()

total_time+=dt#循环调用

root.after(wait_time, simulate, cv)def close(*ignore):"""退出程序,关闭窗口

:param ignore:

:return:"""

globalroot

root.quit()if __name__ == ‘__main__‘:#初始化tkinter 创建根部件

root =tk.Tk()

cv= tk.Canvas(root, height=400, width=600)#绘制一个黑色背景

cv.create_rectangle(0, 0, 600, 600, fill=‘black‘)#使用背景图片

#image = Image.open(‘./image.png‘)

#photo = ImageTk.PhotoImage(image)

#cv.create_image(0, 0, image=photo, anchor=‘nw‘)

cv.pack()

root.protocol(‘WM_DELETE_WINDOW‘, close)#1秒后开始条约simulate()

root.after(100, simulate, cv)

root.mainloop()

python画流星_用python一起来看流星雨相关推荐

  1. 用python画风车_用Python画小女孩放风筝的示例

    我就废话不多说了,直接上代码吧! # coding:utf-8 2import turtle as t 3import random 4# 画心 5def xin(): 6 def curvemove ...

  2. 用python画圆锥_用python画一幅美瞳,今日份来自程序员的浪漫

    如果说,眼睛是心灵的窗户,那么,美瞳就是心灵的彩窗,就像下图中这样. 而我们今天所要挑战的,就是用python画美瞳,而且是五分钟之内画三百副争奇斗艳.各领风骚.绝不重样的美瞳.作为这颗地球上最纯情的 ...

  3. 怎么用python画房子_用python画一个小房子

    用python画一个小房子 2020年07月22日 | 萬仟网IT编程 | 我要评论 如何用python画一个小房子?效果图如下:代码如下:import turtle# 前置p = turtle.Pe ...

  4. python turtle画房子代码里面的窗子,如何用python画房子_用python画一个小房子

    如何用python画一个小房子? 效果图如下: 代码如下: import turtle # 前置 p = turtle.Pen() # 作者要说的话 for i in range(6): print( ...

  5. 用python画佩奇_使用python画个小猪佩奇的示例代码

    基本原理 选好画板大小,设置好画笔颜色.粗细,定位好位置,依次画鼻子.头.耳朵.眼睛.腮.嘴.身体.手脚.尾巴,完事儿. 都知道,Turtle 是 Python 内置的一个比较有趣味的模块,俗称&qu ...

  6. 用python画皇冠_用python做数字油画或者从一幅画学习风格,去画另一幅画

    原博文 2018-08-30 17:12 − 1. 用python做数字油画 模块: pillow 2. 从一幅画学习风格,去画另一幅画 http://pytorch.org/tutorials/ad ...

  7. 利用python画曲线_利用python画出AUC曲线的实例

    以load_breast_cancer数据集为例,模型细节不重要,重点是画AUC的代码.1XS免费资源网 直接上代码:1XS免费资源网 from sklearn.datasets import loa ...

  8. 利用python画曲线_利用Python绘制血药浓度-时间曲线——口服吸收一室模型

    血药浓度-时间曲线一般是通过拟合所测定的血药浓度点而画出来的,但是在某些时候,如阅读文献时,我们需要根据别人报道的PK参数来画出药时曲线.Python语法简单,拥有丰富的开源库,下面尝试通过Pytho ...

  9. 用python画明星_用Python画一颗特别的心送给她

    [前言] 520刚过去了,大家有没有跟自己喜欢的对象在一起呢? 520 当天你还在送 玫瑰花?巧克力?情侣套装?... 小编就想说:你能不能换点新意呢,这些操作已经普通的不能再普通了吧!就像别人来例假 ...

最新文章

  1. C++类的案例(二)
  2. android 程序安装路径选择
  3. leetcode算法题--矩阵区域和
  4. 如何使用gnvm自动更新Windows10操作系统上的nodejs
  5. 几行Python代码,爱上Python编程
  6. python基础3——运算符
  7. windows server 2008配置之AD域服务器 1
  8. Android GSON解析JSON数据
  9. 瑞萨RH850芯片在IAR和CS+编译环境下设置堆(heap)和栈(stack)的大小
  10. vue 饿了么ui如何修改内联样式:element.style
  11. 女大学生 你的青春值多少钱
  12. C#从图中截取部分图片 代码实现截图
  13. 小米平板android版本,想要翻身还需努力 小米平板2安卓版评测
  14. 【以太网硬件十八】网卡是什么?
  15. Windows To Go详解
  16. ROS开发之如何使用RPLidar A1二维激光雷达?
  17. UI灵感分析笔记#3(22.1.2)
  18. vue utils.js公共方法中axios请求返回数据
  19. 织梦调用栏目名称的五个方法
  20. 将软件部署到云端的可行性及其应用意义,是什么?

热门文章

  1. 番茄助手Assist X 快捷键
  2. 与微型计算机运算速度无关的是,四川大学《计算机应用基础0006》17春在线作业1...
  3. 如何将mp4视频压缩变小,视频压缩快速完成
  4. 算术编码原理及其python实现
  5. 阿里测试左移和开发赋能分享
  6. OpenLDAP+freeradius+samba+802.1x实现无线和有线网络认证+动态vlan下发——openLDAP篇
  7. 【Pytorch】计算矩阵中向量之间的两两相似性
  8. vmware时间不同步的问题
  9. 洛谷P2791 幼儿园篮球题
  10. android 加固作用,Android 应用安全 - 应用加固概念