Python钻石戒指
清远小阮 人气:0一、效果演示
二、制作步骤/过程
(一)绘制戒指
使用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()
加载全部内容