1、turtle的介绍及基础知识

1.1、介绍turtle模块

海龟绘图(Turtle Graphics),python内置模块,是一个简单的绘图工具,使用海龟绘图可以编写重复执行简单动作的程序,从而画出精细复杂的形状。turtle中有画布(Canvas)和画笔两个工具元素。

2、画布

2.1、介绍画布

画布是turtle模块用于绘图的区域,在该画布上有一个坐标轴,坐标原点在画布的中心

坐标系:turtle模块中的x轴正方向指向右侧,y轴正方向指向上方。坐标原点位于画布的中心。

2.2、画布的使用

主要介绍两个函数:

1、设置画布的大小和背景颜色

turtle.screensize(canvwidth=None, canvheight=None, bg=None)

  • canvwidth:画布的宽度
  • canvheight:画布的高度
  • bg:背景颜色
  •  当宽度或者高度为整数时表示的是像素;小数时, 表示占据电脑屏幕的比例。当高度或者宽度超过窗口大小时,会出现滚动条。
  • 若不设置值,默认参数为(400,300,None)

2、设置画布的大小和位置

turtle.setup(width, height, startx=None, starty=None)
  • width,height:输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例
  • (startx,starty):这一坐标表示矩形窗口左上角顶点的位置。如果为空,则窗口位于屏幕中心

3、画笔

3.1、画笔状态

turtle模块使用位置方向描述画笔的状态。

默认情况下,画笔的坐标为坐标原点,方向指向x轴正方向,画笔处于放下状态。

3.2、画笔的属性

画笔属性:颜色、画线的宽度、移动速度等。

turtle.pensize():设置画笔的宽度,数字越大,画笔越粗;
turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是rgb3元组。注意:当是rgb时,r、g、b取值为0.0~1.0之间。

例如:

turtle.pencolor(1.0, 0.0, 0.0) 
#或者tup1=(1.0, 0.0, 0.0)
#turtle.pencolor(tup1) #当然列表等其他可迭代序列也可以。同样也可以使用turtle.pencolor((tup1))

turple.pencolor("red")
turtle.pencolor("#32c18f")

turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快,移动速度越快。

3.3、绘图命令

绘图命令通常分为3类:画笔移动命令、画笔控制命令、全局控制命令。

3.3.1、画笔移动命令

turtle.penup() #提起画笔

turtle.pendown() #放下画笔,开始默认状态

turtle.forward(distance)#向当前画笔方向移动distance像素长度

turtle.backward(distance) #向当前画笔相反方向移动distance像素长度

turtle.right(degree) #顺时针移动degree°

turtle.left(degree) #逆时针移动degree°

turtle.goto(x,y) #将画笔移动到坐标为x,y的位置

setx( ) #将当前x轴移动到指定位置

sety( ) #将当前y轴移动到指定位置

turtle.circle() #画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆

setheading(angle) #设置当前朝向为angle角度

home() #将画笔回到原点,并且将画笔指向右侧。注意:当笔放下时,会留下移动到痕迹。

dot(r,color) 
#绘制一个直径为size,颜色为 color 的圆点。
#若size未指定,则直径取pensize+4和2*pensize中的较大值。
#若未指定color则color为pencolor。

3.3.2、画笔控制命令

turtle.fillcolor(colorstring) #绘制图形的填充颜色

turtle.color(color1, color2) #同时设置pencolor=color1, fillcolor=color2

turtle.filling() #返回当前是否在填充状态

turtle.begin_fill() #准备开始填充图形

turtle.end_fill() #填充完成

turtle.hideturtle() #隐藏画笔的turtle形状

turtle.showturtle() #显示画笔的turtle形状

3.3.3、全局控制命令

turtle.done() #使绘图窗口不会自动消失

turtle.clear() #清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset() #清空窗口,重置turtle状态为起始状态

turtle.undo() #撤销上一个turtle动作

turtle.isvisible() #返回当前turtle是否可见

stamp() #复制当前图形

turtle.write(s [,font=("font-name",font_size,"font_type")]) 
#写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;

4、示例

示例1,绘制五角星:

import turtle

t=turtle.Turtle() #创建turtle对象(建议方式)这样就可以创建多个画笔了
t.pencolor("red") #设置画笔颜色为红色

t.penup() #先提画笔
t.goto(-100,100) #移动画笔位置,使最后的图像居中
t.pendown() #放画笔

t.speed(2) #控制画笔速度
t.fillcolor("red") #填充颜色为红色
t.begin_fill() #开始填充颜色
for i in range(0,5):
    t.forward(200)
    t.right(144)
t.end_fill() #停止填充

t.hideturtle() #隐藏画笔的turtle形状
turtle.done() #使turtle窗口不会自动消失

运行截图:

示例2,绘制一个勋章——一个圆里嵌套一个五角星:

import math
import turtle

turtle.colormode(255) #切换颜色模式,turtle.colormode(cmode=None)返回颜色模式或将其设为 1.0 或 255。有1.0模式和255模式
t1=turtle.Turtle()
t2=turtle.Turtle() #创建两个对象,turtle1用来画圆,turtle2用来画五角星

#画圆
r=100 #半径为100
t1.color((217,217,25),(217,217,25)) #前面一个参数是pencolor,后一个参数是fillcolor
t1.pensize(3)

t1.penup()
t1.goto(0,200)
t1.pendown()
t1.begin_fill()
t1.circle(r*(-1)-10) #其实原本半径为100,但是为了美观,就将半径放大了
t1.end_fill()
t1.hideturtle()
#画五角星
t2.color("red","red")

t2.penup()
t2.goto(r*(-1)*math.cos(math.pi/10),r*math.sin(math.sin(math.pi/10))+r)
t2.pendown()
t2.begin_fill()
for i in range(0,5):
    t2.forward(100*math.cos(math.pi/10)*2)
    t2.right(144)
t2.end_fill()
t2.hideturtle()

turtle.done()

效果如下图:

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐