后唐李煜曾说道,樱花落尽春将困,秋千架下归时。漏暗斜月迟迟,花在枝。樱花落尽的时候春天也将过去了,秋千架下归去时。天上的斜月姗姗来迟,花还在枝头。
关于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()
以上就是樱花树的全部绘制过程了。
到此这篇关于Python利用Turtle库绘制一颗樱花树的文章就介绍到这了,更多相关Python Turtle樱花树内容请搜索软件开发网以前的文章或继续浏览下面的相关文章希望大家以后多多支持软件开发网!