Python简单几步画个钻石戒指
短信预约 -IT技能 免费直播动态提醒
一、效果演示
二、制作步骤/过程
(一)绘制戒指
使用tkinter的canvas画布绘制8个点,然后把这8个点使用canvas.create_line()划线函数用直线连接起来形成钻石形状。为了增强效果让钻石旋转起来,使用while循环,每隔一段时间重新绘制钻石,但绘制的起始角度偏转11.25度,这样运行程序钻石看上去就旋转起来了。
绘制好钻石后,再使用canvas.create_oval()绘制两个椭圆作为戒指环就可以了。
(二)绘制雪花
只有戒指单调了一点,来给画布添加点雪花。这里使用random.randint()函数每隔一段时间随机绘制50个10px大小的白色正方形,并绘制在画布上,这里看起来就好多了。这里绘制正方形使用到了canvas.create_rectangle()函数。
三、完整源代码文件
import time,random,math
from tkinter import Tk, Canvas
# 打开窗口
def open_window():
_root = Tk()
_root.title("七夕,用Python给你送个钻石戒指")
_root.config(bg='black')
# 设置画板
_canvas = Canvas(_root, width=640, height=380, bg='black')
_canvas.pack()
# 待窗口创建后,2秒后执行动画
_root.after(2000, paint_canvas(_root, _canvas))
_root.mainloop()
# 启动动画函数
def paint_canvas(_tk, _canvas):
# 设置钻石开始角度
_start_angle = 0
# 设置存放钻石八个点x,y坐标的列表
_list_x, _list_y = [], []
# 设置钻石八个点之间的角度_angel,钻石中心点x,y坐标_x_center,_y_center,钻石半径_r
_angle, _x_center, _y_center, _r = 30, 320, 120, 50
while True:
# 清空画板
_canvas.delete("all")
# 画戒指
paint_ring(_canvas, _start_angle, _angle, _x_center, _y_center, _r, _list_x, _list_y)
_list_x.clear()
_list_y.clear()
# 从新计算钻石开始角度
_start_angle = (_start_angle + 11.25) % 360
# 画星星
paint_star(_canvas)
# 动画刷新时间间隔
time.sleep(0.05)
_canvas.update()
_tk.update()
# 画戒指函数
def paint_ring(_canvas, _start_angle, _angle, _x_center, _y_center, _r, _list_x, _list_y):
_canvas.create_oval(180, 110, 460, 280, outline='white')
_canvas.create_oval(190, 130, 450, 275, outline='white')
for i in range(12):
_list_x.append(_x_center + _r * math.cos((_start_angle + (_angle * i)) * math.pi / 180))
_list_y.append(_y_center + _r * math.sin((_start_angle + (_angle * i)) * math.pi / 180))
for i in range(12):
for j in range(12):
_canvas.create_line(_list_x[i], _list_y[i], _list_x[j], _list_y[j], fill='white')
# 画雪花函数
def paint_star(_canvas):
# 随机生成不超过画布长、宽的50个正方形点
for i in range(50):
x = random.randint(0, 630)
y = random.randint(0, 370)
_canvas.create_rectangle(x, y, x + 5, y + 5, fill='white')
if __name__ == '__main__':
# 打开程序窗口
open_window()
到此这篇关于Python简单几步画个钻石戒指的文章就介绍到这了,更多相关Python钻石戒指内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341