from turtle import * # 加载模块中的所有内容,直接调用函数()
# import turtle # 加载模块,调用格式:turtle.函数()
color('red', 'yellow') # 指定颜色,'red'为线颜色,'yellow'为线包裹区域填充色
begin_fill() # 开始填充
speed(0) # 调整画图速度
while True:
forward(200) # 前进,或fd(200)
left(170) # 逆时针旋转170°
# 如果画笔坐标到原点距离小于1,退出画图循环
# pos()为position()简写
if abs(pos()) < 1:
break
end_fill() # 结束填充
done() # 暂停,避免画图完直接自动关闭窗口
turtle的两个类: TurtleScreen, RawTurtle(RawPen)
TurtleScreen类定义了图形窗口作为画板
RawTurtle(RawPen)类定义了画笔
RawTurtle操作对象TurtleScreen
画板中心位置为二位坐标系原点,画笔默认处于原点,指向x轴正方向
forward(x): 前进x个像素点
backward(x): 后退x个像素点
left(x): 逆时针旋转x度
right(x): 顺时针旋转x度
done(): 暂停屏幕
from turtle import *
forward(760) # 前进760个像素点
backward(960) # 后退960个像素点
left(90) # 画笔逆时针旋转90°
right(180) # 右转180°
done() # 暂停
speed(x):绘画速度,0最快,1最慢,[1, 10]逐级加快
fillcolor(x):指定填充颜色,不改变画线颜色,阉割版color(),x可以是字符串型颜色英文单词,也可以是 字符串型十六进制代码(查表)
color(x, y):类比fillcolor(),x为线条颜色,y为填充颜色
颜色填充时,非闭合图形也能填充
begin_fill():开始填充
penup():画笔抬起
position()或pos():获取画笔当前坐标
end_fill():结束填充
pendown():画笔落下
goto(x, y):画笔从当前位置移动到指定坐标,如果画笔当前状态为落下,则移动过程会画线
distance(x, y):画笔到指定点的距离和角度
towards(x, y):到指定点的逆时针角度
xcor():获取箭头x坐标
ycor():获取箭头y坐标
from turtle import *
speed(10)
fillcolor('#00DB00') # 先运行,被后面的color填充覆盖
color('red', 'yellow')
begin_fill()
penup()
print(position())
print(abs(position()))
for i in range(4):
forward(100)
left(90)
print(position())
# 并非回到原点,有误差
print(abs(position()))
end_fill()
pendown()
goto(100, 100)
# 获取箭头状态
# 获取箭头位置
print(position())
# 获取箭头x, y坐标
print(xcor())
print(ycor())
# 箭头到指定点的距离和角度
print(distance((0, 0)))
# 逆时针角度
print(towards((0, 0)))
left(225)
# 暂停
done()
from turtle import *
speed(0)
for i in range(180):
forward(4)
right(2)
penup()
goto((0, 200))
pendown()
left(180)
# circle(半径)
circle(100)
done()
from turtle import *
# 正方体
speed(5)
for i in range(4):
forward(100)
left(90)
penup()
goto((100, 0))
pendown()
goto((150, 50))
left(90)
forward(100)
left(90)
forward(100)
goto((0, 100))
penup()
goto((100, 100))
pendown()
goto((150, 150))
penup()
goto((0, 0))
right(135)
for i in range(1, int(50 * 2 ** 0.5) // 10 + 1):
forward(5)
pendown()
forward(5)
penup()
goto((50, 50))
left(45)
for i in range(1, 100 // 10 + 1):
forward(5)
pendown()
forward(5)
penup()
goto((50, 50))
right(90)
for i in range(1, 100 // 10 + 1):
forward(5)
pendown()
forward(5)
penup()
goto((0, 0))
done()
math数学库,调用三角函数与pi
for-in循环中i不参与运算时可以使用_(下划线)代替
hideturtle():隐藏箭头
showturtle():显示箭头
# 风车
from turtle import *
from math import *
colors = ['yellow', '#00FFFF', '#28FF28', 'pink']
for color in colors:
fillcolor(color)
begin_fill()
forward(200)
right(90)
# for-in循环中i不参与运算时可以使用_(下划线)代替
for _ in range(180):
right(1)
forward(200 * sin(pi / 360))
end_fill()
# 显示箭头
showturtle()
# 隐藏箭头
hideturtle()
done()
# 风车
from turtle import *
from math import *
colors = ['yellow', 'pink', '#28FF28', '#00FFFF' ]
for color in colors:
fillcolor(color)
begin_fill()
forward(200)
left(90)
circle(100, -180) # 顺时针画圆,画笔箭头倒着走
end_fill()
# 隐藏箭头
hideturtle()
done()
语法:write(arg,move,align,font)
arg:文字内容
move:默认为False,为True时画笔移到文字右下角,会画线,
align:‘right’, ‘left’, ‘middle’, 画笔位置 右 左 中(执行在move前)
from turtle import *
# 画布上添加文字
# 语法:write(arg,move,align,font)
# move默认为False,如果改为True,箭头移动到文字右下角,类比goto(),结合align可以设置下划线
write('你好,世界!', move=True, align='left', font=("华文行楷", 15, "normal"))
# 设置背景颜色
bgcolor('#00FFFF')
# screensize(4000, 2500)
# 设置背景图片
bgpic("./2.png")
# 清空绘图屏幕
# clearscreen()
# 自定义函数
# def main(x, y):
# bgpic("./2.png")
# 鼠标事件
# 单击,获取点击位置的坐标,并传递给main函数
# onclick(main)
# 释放
# onrelease(main)
# 拖拽
# ondrag(main)
# # 修改画笔的粗细
# pensize(100)
# # 修改画笔颜色
# pencolor('blue')
# fd(100)
done()
from turtle import *
from math import *
speed(5)
penup()
goto(-100, 50)
pendown()
# 头部
pensize(2)
circle(50)
# 身体
right(90)
fd(120)
# 腿
penup()
goto(-100 - 120 * sin(pi / 4), -70 - 120 * sin(pi / 4))
pendown()
for a in [[225, 120], [60, 60], [100, 90]]:
right(a[0])
fd(a[1])
# 胳膊
for i in [[10, 115, 45], [-20, 315, 315]]:
penup()
goto(-100, i[0])
pendown()
for j in [[1, 50], [2, 60]]:
left(i[j[0]])
fd(j[1])
# 眼睛
pensize(5)
left(135)
for i in [-80, -120]:
penup()
goto(i, 100)
pendown()
fd(10)
# 爱心
penup()
goto(100, 50)
left(30) # 如果角度为45,会好画很多
fillcolor('pink')
begin_fill()
circle(50, 195)
for b in [90, 195]:
fd(100 * cos(pi / 24) * cos(5 * pi / 24) / cos(pi / 4))
left(b)
goto(100, 50)
circle(50, -195)
end_fill()
hideturtle()
done()