Python —— turtle(动图)

 
 
 
 

基础方法

 
 

设置turtle的自动补充提示

将如下代码,放到turtle的源代码的" all="处(要注释掉原来的代码)python

__all__ = ['ScrolledCanvas', 'TurtleScreen', 'Screen', 'RawTurtle', 'Turtle', 'RawPen', 'Pen', 'Shape', 'Vec2D', 'back',
           'backward', 'begin_fill', 'begin_poly', 'bk', 'addshape', 'bgcolor', 'bgpic', 'bye', 'clearscreen',
           'colormode', 'delay', 'exitonclick', 'getcanvas', 'getshapes', 'listen', 'mainloop', 'mode', 'numinput',
           'onkey', 'onkeypress', 'onkeyrelease', 'onscreenclick', 'ontimer', 'register_shape', 'resetscreen',
           'screensize', 'setup', 'Terminator', 'setworldcoordinates', 'textinput', 'title', 'tracer', 'turtles',
           'update', 'window_height', 'window_width', 'write_docstringdict', 'done', 'circle', 'clear', 'clearstamp',
           'clearstamps', 'clone', 'color', 'degrees', 'distance', 'dot', 'down', 'end_fill', 'end_poly', 'fd',
           'fillcolor', 'filling', 'forward', 'get_poly', 'getpen', 'getscreen', 'get_shapepoly', 'getturtle', 'goto',
           'heading', 'hideturtle', 'home', 'ht', 'isdown', 'isvisible', 'left', 'lt', 'onclick', 'ondrag', 'onrelease',
           'pd', 'pen', 'pencolor', 'pendown', 'pensize', 'penup', 'pos', 'position', 'pu', 'radians', 'right', 'reset',
           'resizemode', 'rt', 'seth', 'setheading', 'setpos', 'setposition', 'settiltangle', 'setundobuffer', 'setx',
           'sety', 'shape', 'shapesize', 'shapetransform', 'shearfactor', 'showturtle', 'speed', 'st', 'stamp', 'tilt',
           'tiltangle', 'towards', 'turtlesize', 'undo', 'undobufferentries', 'up', 'width', 'write', 'xcor', 'ycor']

在这里插入图片描述

 
 

大体流程

一、初始化"画布"web

turtle.setup(widthPix, heightPix, startX, startY)

例:
设置初始画布宽度为80%的屏幕宽度canvas

turtle.setup(width=0.8)

 

二、初始化"画笔"
1)、 设置笔颜色ide

turtle.pencolor("red")

2)、设置线宽(计算机绘图的最小单位为像素,此处能够传浮点型数据,可是实际绘图的时候依旧会以整数像素为单位进行运动)svg

turtle.width(4)

3)、设置笔的运行速度函数

turtle.speed(speedPara)

speedPara —— 1~10,逐渐递增
speedPara —— 0,速度最快oop

4)、设置画笔的形状动画

turtle.shape(shapeStr)

shapeStr取值“arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”spa

 

三、移动画笔,进行画图
1)、前进3d

turtle.forward(moveDistance)
或者
turtle.fd(moveDistance)
如:
turtle.forward(100)

2)、后退

turtle.back(moveDistance)
turtle.bk(moveDistance)

3)、移动到指定位置
方法一:

turtle.goto(二维坐标元组)
如:
turtle.goto((x, y))

方法二:
保持y(x)不变,移动x(y)

turtle.setx(目标位置的x坐标)
turtle.sety(目标位置的y坐标)

方法三:
回到原点

turtle.home()

turtle坐标系
在这里插入图片描述

 
四、控制画笔方向
1)、左旋转

turtle.left(角度)
如:
turtle.left(90)

在这里插入图片描述
2)、右旋转

turtle.right(角度)

3)、直接设置画笔的箭头角度

turtle.setheading(角度)
或
turtle.seth(角度)

在这里插入图片描述

 
五、保持画布持续运行

turtle.mainloop()

注意:turtle.mainloop()以后的代码不运行,代码运行到此处后进入到mainloop()的无限循环中

 
六、经常使用形状函数
1)、画圆

turtle.circle(半径)

以当前箭头所在位置为起点,逆时针画圆

import turtle

turtle.setup(900, 900)

turtle.pencolor("green")
turtle.width(4)
turtle.speed(3)

turtle.right(45)
turtle.fd(100)
turtle.left(45)
turtle.fd(100)

# 画圆
turtle.circle(150)

turtle.mainloop()

在这里插入图片描述

2)、画弧
第二个参数“角度”是指画笔旋转的目标角度,即若是此值为90则画笔旋转90度后即中止运动

turtle.circle(半径,角度)
import turtle

turtle.setup(900, 900)

turtle.pencolor("green")
turtle.width(4)
turtle.speed(1)
turtle.seth(90)

# 画弧
turtle.circle(200, 90)

turtle.mainloop()

在这里插入图片描述
3)、画一个有填充的圆(相似于大点)

turtle.dot(直径)

在这里插入图片描述
 
七、控制画笔起落
1)、抬起

turtle.up()

2)、落下

turtle.down()

 
八、颜色填充
非必须闭合

turtle.fillcolor("red")
turtle.begin_fill()
在此处画轮廓
turtle.end_fill()
import turtle

turtle.setup(900, 900)

turtle.pencolor("green")
turtle.width(4)
turtle.speed(1)

# 画有填充的形状
turtle.fillcolor("red")
turtle.begin_fill()
turtle.fd(100)
turtle.sety(100)
turtle.setx(0)
turtle.home()
turtle.end_fill()

turtle.mainloop()

在这里插入图片描述

 
 

简单实例

 
 

简单笔记

import turtle

# 初始化画图
turtle.setup(900, 900)

# 画笔设置
# # 设置画笔颜色
turtle.pencolor("red")
# # 设置画笔宽度
turtle.width(4.5)
# # 设置画笔速度
turtle.speed(1)

# 画笔运动
# # 前进
turtle.forward(400)

# # 后退
turtle.back(400)

# # 到达指定点
turtle.goto((100, 100))

# 画笔旋转
#向左旋转
turtle.left(90)
turtle.seth

# 初始化画笔
turtle.pencolor("red")

# 经过转向画圆
n = 1
while n <= 120:
    turtle.forward(10)
    turtle.left(3)
    n += 1

# 保持画布运行
turtle.mainloop()

在这里插入图片描述
 
 

画网格球

import turtle

turtle.setup(900, 900)

turtle.pencolor("green")
turtle.width(4)
turtle.speed(0)
turtle.seth(90)

# 画球体
n = 1
while n <= 36:
    turtle.circle(200)
    turtle.left(10)
    n += 1

turtle.mainloop()

在这里插入图片描述