Python —— turtle(动图)
基础方法
设置turtle的自动补充提示
将以下代码,放到turtle的源代码的" all="处(要注释掉原来的代码)
__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']
大致流程
1、初始化"画布"
turtle.setup(widthPix, heightPix, startX, startY)
例:
设置初始画布宽度为80%的屏幕宽度
turtle.setup(width=0.8)
2、初始化"画笔"
1)、 设置笔颜色
turtle.pencolor("red")
2)、设置线宽(计算机绘图的最小单位为像素,此处可以传浮点型数据,但是实际绘图的时候依旧会以整数像素为单位进行运动)
turtle.width(4)
3)、设置笔的运行速度
turtle.speed(speedPara)
speedPara —— 1~10,逐渐递增
speedPara —— 0,速度最快
4)、设置画笔的形状
turtle.shape(shapeStr)
shapeStr取值“arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”
3、移动画笔,进行画图
1)、前进
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坐标系
4、控制画笔方向
1)、左旋转
turtle.left(角度)
如:
turtle.left(90)
2)、右旋转
turtle.right(角度)
3)、直接设置画笔的箭头角度
turtle.setheading(角度)
或
turtle.seth(角度)
5、保持画布持续运行
turtle.mainloop()
注意:turtle.mainloop()之后的代码不运行,代码运行到此处后进入到mainloop()的无限循环中
6、常用形状函数
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(直径)
7、控制画笔起落
1)、抬起
turtle.up()
2)、落下
turtle.down()
8、颜色填充
非必须闭合
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()