Python利用Turtle库绘制一颗樱花树

 更新时间:2022年04月20日 08:34:50   作者:Python 集中营  
后唐李煜曾说道,樱花落尽春将困,秋千架下归时。漏暗斜月迟迟,花在枝。樱花落尽的时候春天也将过去了,秋千架下归去时。天上的斜月姗姗来迟,花还在枝头。本文将用Python+Turtle绘制一颗樱花树,感兴趣的可以尝试一下

后唐李煜曾说道,樱花落尽春将困,秋千架下归时。漏暗斜月迟迟,花在枝。樱花落尽的时候春天也将过去了,秋千架下归去时。天上的斜月姗姗来迟,花还在枝头。

file

关于python画图相关的,我们一直使用的是turtle来画,用专业的非标准库来做专业的事儿。将需要使用到的内置库或者非标准库全部都导入到当前的代码块中。

from time import sleep  # 用于控制程序运行时的阻塞停顿
from turtle import *  # 绘图相关接口
import random  # 生成随机数

设置全局需要初始化的对象,以及相关的全局参数设置,这样就不用在后面每画一笔进行设置了。

但是画布上面有一个箭头一直无法消除,有知道的大佬烦请留言说一下解决办法,感激不尽!

tle = Turtle()  # 初始化小乌龟画笔对象
tle.hideturtle()  # 全局隐藏画笔
tle.clear()  # 清除屏幕
tle.speed(0)  # 设置画笔速度为0,也就是最快的画笔速度
scr = Screen()  # 初始化屏幕对象
getscreen().tracer(30, 0)  # 返回一个TurtleScreen类的绘图对象,并开启绘画,加速绘画过程
scr.screensize(bg='white')  # 设置背景颜色

开始绘制,设置开始时的画笔相关的属性或参数。

tle.left(90)
tle.up()
tle.backward(150)
tle.down()
tle.color('sienna')

接下来是编写两个函数,一个是用于生成树枝/树干并在对应的树枝旁边画上樱花。另一个则是在樱花树的地上铺满掉落的樱花,这样的思路来源于CSDN博客平台,向大佬递茶!

编写画樱花树的树枝/树干部分/树枝樱花的函数draw_branch_flower。

def draw_branch_flower(len):
    '''
    绘制树枝/花函数
    :param len: 树枝长度
    :return:
    '''
    sleep(0.0005)
    if len > 3:
        if 8 <= len <= 12:
            if random.randint(0, 2) == 0:
                tle.color('snow')
            else:
                tle.color('lightcoral')
            tle.pensize(len / 3)
        elif len < 8:
            if random.randint(0, 1) == 0:
                tle.color('snow')
            else:
                tle.color('lightcoral')
            tle.pensize(len / 2)
        else:
            tle.color('sienna')
            tle.pensize(len / 10)
        tle.forward(len)
        a = 1.5 * random.random()
        tle.right(20 * a)
        b = 1.5 * random.random()
        draw_branch_flower(len - 10 * b)
        tle.left(40 * a)
        draw_branch_flower(len - 10 * b)
        tle.right(20 * a)
        tle.up()
        tle.backward(len)
        tle.down()

编写画樱花树旁边的地上的花瓣函数draw_ground_flower。

def draw_ground_flower(flower_num):
    '''
    绘制地上掉落的花瓣
    :param flower_num: 花瓣数量
    :return:
    '''
    for i in range(flower_num):
        a = 200 - 400 * random.random()
        b = 10 - 20 * random.random()
        tle.up()
        tle.forward(b)
        tle.left(90)
        tle.forward(a)
        tle.down()
        tle.color('lightcoral')
        tle.circle(1)
        tle.up()
        tle.backward(a)
        tle.right(90)
        tle.backward(b)

调用樱花树相关的绘图函数,快速完成绘图过程。

draw_branch_flower(60)
draw_ground_flower(200)

使用exitonclick函数保持在绘画完成时,窗口不会直接关闭。

scr.exitonclick()

file

以上就是樱花树的全部绘制过程了。

到此这篇关于Python利用Turtle库绘制一颗樱花树的文章就介绍到这了,更多相关Python Turtle樱花树内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Django基础知识与基本应用入门教程

    Django基础知识与基本应用入门教程

    这篇文章主要介绍了Django基础知识与基本应用,结合实例形式分析了Django框架基本的项目创建、启动、查看版本等操作,并结合一个简单的blog应用示例分析了Django的基本使用方法,需要的朋友可以参考下
    2018-07-07
  • python如何重载模块实例解析

    python如何重载模块实例解析

    这篇文章主要介绍了python如何重载模块实例解析,涉及模块的概念,载入和重载的实例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Pandas 如何处理DataFrame中的inf值

    Pandas 如何处理DataFrame中的inf值

    这篇文章主要介绍了Pandas 如何处理DataFrame中的inf值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05
  • 创建pycharm的自定义python模板方法

    创建pycharm的自定义python模板方法

    今天小编就为大家分享一篇创建pycharm的自定义python模板方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • 启动Atom并运行python文件的步骤

    启动Atom并运行python文件的步骤

    在本篇文章中我们给大家分享了启动Atom并运行python文件的步骤以及具体做法,需要的朋友们参考下。
    2018-11-11
  • 详解基于python的多张不同宽高图片拼接成大图

    详解基于python的多张不同宽高图片拼接成大图

    这篇文章主要介绍了详解基于python的多张不同宽高图片拼接成大图,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • Django 解决上传文件时,request.FILES为空的问题

    Django 解决上传文件时,request.FILES为空的问题

    这篇文章主要介绍了Django 解决上传文件时,request.FILES为空的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-05-05
  • python实现mysql的读写分离及负载均衡

    python实现mysql的读写分离及负载均衡

    这篇文章主要介绍了python实现mysql的读写分离及负载均衡 ,需要的朋友可以参考下
    2018-02-02
  • python里glob模块知识点总结

    python里glob模块知识点总结

    在本篇文章里小编给大家整理的是一篇关于python里glob模块知识点总结,有需要的朋友们可以参考下。
    2021-01-01
  • python中shell执行知识点

    python中shell执行知识点

    在本篇文章里小编给大家分享的是关于python中shell执行知识点内容,需要的朋友们可以学习下。
    2020-05-05

最新评论