Python简单几步画个钻石戒指
作者:清远小阮 时间:2023-04-26 13:59:27
一、效果演示
二、制作步骤/过程
(一)绘制戒指
使用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()
来源:https://blog.csdn.net/qq616491978/article/details/126159742
标签:Python,钻石,戒指
0
投稿
猜你喜欢
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2022-04-18 16:28:45
深入解析JavaScript框架Backbone.js中的事件机制
2024-05-03 15:58:59
Python利用LyScript插件实现批量打开关闭进程
2021-10-07 04:46:15
在sql查询中使用表变量
2024-01-23 10:25:59
Pytorch搭建YoloV4目标检测平台实现源码
2021-01-21 19:02:52
用Python分析3天破10亿的《我不是药神》到底神在哪?
2023-04-29 06:16:26
js实现拖动缓动效果
2024-04-29 13:44:28
Python程序设计入门(3)数组的使用
2023-07-20 07:11:15
清除代码异味
2011-05-21 08:34:00
vue以组件或者插件的形式实现throttle或者debounce
2024-05-09 15:23:55
在Python的Bottle框架中使用微信API的示例
2022-06-02 00:12:47
py3nvml实现GPU相关信息读取的案例分析
2022-01-11 11:00:52
linux下导入、导出mysql数据库命令的实现方法
2024-01-23 15:55:33
Vue.extend实现组件库message组件示例详解
2024-05-09 15:09:26
python目标检测yolo1 yolo2 yolo3和SSD网络结构对比
2022-05-24 16:16:39
Python有序查找算法之二分法实例分析
2023-04-09 00:02:37
在pytorch中如何查看模型model参数parameters
2021-12-04 22:43:29
400多行Python代码实现了一个FTP服务器
2023-12-10 19:31:31
返回页面顶部top按钮通过锚点实现(自写)
2024-04-10 10:47:23
深度解析Python线程和进程
2023-04-19 01:08:16