turtle库的作用
python 提供画图工具标准库:turtle库包绘图坐标体系、画笔控制函数和形状绘制函数,用来绘制想要的图画,turtle库的调用方式参考Python从入门到入魔第五天——jieba库的使用
turtle语法元素分析
turtle库绘图有一个基本的框架:一个小海龟在坐标系中爬行,爬行的轨迹绘制成图形。对于小海龟有“前进”,“后退”,“向左”,“”向右,“旋转”等行为。开始时位于画布正中间。
**主要控制函数**:
画布:(不建立画布,默认画布在屏幕中间400x300像素)
turtle.setup(width,heigh,startx,starty) #设置主窗体大小,参数依次为:宽,高,窗体左上角x坐标,窗体左上角y坐标(整数代表像素,小数代表占屏比)
画笔属性:(不调用画笔参数时默认默认值)
turtle.pensize(x) #定义画笔宽度(粗细)
turtle.pencolor("颜色") #定义画笔颜色
turtle.speed(x) #定义画笔速度
画笔操作命令:(起始状态下画笔在画布正中央坐标(0,0)处,画笔方向向东)
turtle.penup() #抬起画笔(等效于turtle.pu()/turtle.up)
turtle.penddown() #画笔落下(等效于turtle.pd()/turtle.down())
turtle.fd(x) #画笔前进,x为前进像素(距离)
turtle.goto(x,angle) #画笔向angle方向前进x像素(距离)
turtle.backward(x) #向画笔相反方向前进,x为前进像素(距离)
turtle.fillcolor() #颜色填充
turtle.begin_fill #准备开始填充
turtle.end_fill() #结束填充
turtle.color(pencolor,fillcolor) #同时设置画笔颜色和填充颜色
turtle.right(angle) #画笔顺时针转angle度
turtle.left(angle) #画笔向左转angle度
tirtle.seth(angle) #调整画笔角度
turtle.circle(radius,extent=None) #以radius为半径绘制extent角度的弧形
turtle.clear() #清空当前窗口图形
turtle.showturtle() #显示画标
turtle.hideturtle() #隐藏画标
turtle.write(s,[font=("font_name","font_size","font_type")])#写文本,s为文本内容,font为字体以及字体的名称,大小和属性
画个正方形:
由于程序执行结束后会自动退出,为了使画好的正方形延迟退出,调用time库里的sleep参数
import turtle
import time
for i in range(4):
turtle.fd(200)
turtle.left(90)
time.sleep(10) #延时10s
三角形,多边形会吗?
正方形螺旋:
import turtle
import time
distance = 5 #第一次前进5像素
turtle.speed(10)
for i in range(40):
turtle.fd(distance)
turtle.left(90)
distance += 5 #循环一次距离增加5
time.sleep(2) #延迟2s退出程序
太阳花绘制:
每个人的审美不一样,画出来的样子自己把控,以太阳花每个角40度为例
(角度就是180-画图时调用角度之和)比如:本作品:180-(50+90)=40
import time
import turtle
turtle.speed(2) #控制画笔速度为2
turtle.color("red","yellow") #画笔颜色为“red”,背景填充"yellow"
turtle.begin_fill() #开始填充背景色
for i in range(20): #化20次
turtle.left(50) #初始方向
turtle.fd(200) #前进
turtle.left(90) #在该前进角度下在向左转90度
turtle.end_fill() #结束填充背景色
turtle.penup() #抬起画笔
turtle.goto(200,100) #向100度方向前进200像素
turtle.write("偷来的太阳花",font=("green","15")) #打印文本
time.sleep(10)
玫瑰花绘制实例分析:
如果不知道玫瑰花怎么化,或者不知道化成什么样子,可以搜一下玫瑰花图片为参考图!!每个人画出来的都可能不一样,没有好坏之分!
import turtle
import time
#定义画笔属性
turtle.setup(800, 600, 200, 50)
turtle.speed(2)
turtle.pensize(1)
#花蕊
turtle.penup()
turtle.goto(0, 100)
turtle.begin_fill()
turtle.fillcolor('red')
turtle.pendown()
turtle.circle(10, 180)
turtle.circle(15, 100)
turtle.seth(320)
turtle.circle(30, 120)
turtle.seth(150)
turtle.circle(50, 100)
turtle.seth(-80)
turtle.fd(50)
turtle.circle(50, 70)
turtle.circle(50, 30)
turtle.circle(50, 30)
turtle.seth(40)
turtle.circle(30, 60)
turtle.fd(20)
turtle.seth(120)
turtle.fd(60) # 到花中心的右上方
turtle.end_fill()
#花瓣
turtle.speed(5)
turtle.begin_fill()
turtle.fillcolor('red')
turtle.seth(0)
turtle.circle(-20, 70)
turtle.seth(70)
turtle.fd(20)
turtle.seth(-40)
turtle.circle(-90, 100) # 右弧
turtle.circle(-30, 60) # di
turtle.seth(170) # 左弧
turtle.circle(-90, 100)
turtle.seth(270)
turtle.circle(100, 60)
turtle.seth(0)
turtle.circle(-40, 81) # 底部
turtle.seth(130)
turtle.circle(-120, 30)
turtle.seth(80)
turtle.circle(-80, 30)
turtle.seth(70)
turtle.circle(-40, 30)
turtle.seth(83)
turtle.fd(22)
turtle.end_fill()
#枝叶
turtle.speed(5)
turtle.penup() # 茎
turtle.goto(50, -13)
turtle.pendown()
turtle.seth(-90)
turtle.circle(180, 60)
turtle.seth(-30)
turtle.circle(-180, 40)
turtle.penup() # 叶子
turtle.goto(74, -105)
turtle.pendown()
turtle.seth(40)
turtle.circle(180, 20)
turtle.penup()
turtle.goto(94, -85)
turtle.fillcolor('green')
turtle.begin_fill()
turtle.pendown()
turtle.seth(100)
turtle.circle(-60, 100)
turtle.seth(-80)
turtle.circle(-60, 100)
turtle.end_fill()
turtle.seth(45)
turtle.fd(60)
turtle.penup()
turtle.goto(152, -178)
turtle.pendown()
turtle.seth(160)
turtle.circle(180, 20)
turtle.penup()
turtle.goto(120, -168)
turtle.begin_fill()
turtle.seth(130)
turtle.pendown()
turtle.circle(60, 100)
turtle.seth(-50)
turtle.circle(60, 100)
turtle.end_fill()
turtle.seth(160)
turtle.circle(100, 40)
turtle.penup()
turtle.goto(100,40)
turtle.write("赶紧送给心爱的人吧",font=("red","15"))
time.sleep(5)