返回顶部
首页 > 资讯 > 后端开发 > Python >Python简单几步画个钻石戒指
  • 798
分享到

Python简单几步画个钻石戒指

2024-04-02 19:04:59 798人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录一、效果演示二、制作步骤/过程(一)绘制戒指(二)绘制雪花三、完整源代码文件一、效果演示 二、制作步骤/过程 (一)绘制戒指 使用tkinter的canvas画布绘制8个点,然

一、效果演示

二、制作步骤/过程

(一)绘制戒指

使用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钻石戒指内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Python简单几步画个钻石戒指

本文链接: https://lsjlt.com/news/120315.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作