turtle知识点
1. 画布
1.1 绘图坐标系
1).turtle.setup(width,height,startx,starty)
作用:设置主窗口的大小和位置。默认参数值保存在配置字典中,可通过 turtle.cfg 文件进行修改。
-
width: 窗口宽度,如果值是整数,表示像素值;如果值是小数,表示窗口宽度与屏幕的比例,默认为屏幕的 50%。
-
height : 窗口高度,如果值是整数,表示像素值;如果值是小数,表示窗口高度与屏幕的比例,默认为屏幕的 75%。
-
startx: 如为正值,表示初始位置距离屏幕左边缘多少像素,负值表示距离右边缘,如果值是None,窗口位于屏幕水平中央。
-
starty: 如为正值,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘,如果值是None,窗口位于屏幕垂直中央。
-
实例:
import turtle, time turtle.screensize(800, 600, "pink") turtle.screensize() #返回默认大小(400, 300) time.sleep(3)
2).turtle.screensize(canvwidth, canvheight, bg)
screensize包括3个参数,定义了画板的大小和背景色
-
canvwidth – 正整型数,以像素表示画布的新宽度值
-
canvheight – 正整型数,以像素表示画面的新高度值
-
bg – 颜色字符串或颜色元组,新的背景颜色
-
实例:
1. import turtle, time turtle.screensize(800, 600, "pink") turtle.screensize() #返回默认大小(400, 300) time.sleep(3)
5.呈现效果
3).注意:
如未指定任何参数,则返回当前的 (canvaswidth, canvasheight)。否则改变作为海龟绘图场所的画布大小。不改变绘图窗口。要观察画布的隐藏区域,可以使用滚动条。通过此方法可以令之前绘制于画布之外的图形变为可见。
想要改变窗口的大小,改变screensize不行,需要改变setup。
2. 画笔
turtle.penup() # 抬起画笔,之后移动画笔不绘制形状。
turtle.pendown() # 落下画笔,之后移动画笔将绘制形状。
turtle.pensize() # 用来设置画笔尺寸;turtle.width()设置画笔宽度,当无参数输入时返回当前画笔宽度。
turtle.pencolor()# 没有参数传入返回当前画笔颜色。turtle.pencolor((r,g,b))设置当前画笔颜色。
turtle.speed() # 设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
2.1 RGB色彩
1).常用颜色:
英文名称 | RGB整数值 | RGB小数值 | 中文名称 |
---|---|---|---|
white | 255,255,255 | 1,1,1 | 白色 |
yellow | 255,255,255 | 1,1,0 | 黄色 |
magenta | 255,0,255 | 1,0,1 | 洋红 |
cyan | 0,255,255 | 0,1,1 | 青色 |
blue | 0,0,255 | 0,0,1 | 蓝色 |
black | 0,0,0 | 0,0,0 | 黑色 |
purple | 160,32,240 | 0.63,0.13,0.94 | 紫色 |
实例:
# 颜色字符串
turtle.pencolor('purple') # 小写
# RGB小数值
turtle.pencolor(0.63,0.13,0.94) #三个小数值
# RGB数值元组
turtle.pencolor((0.63,0.13,0.94)) # 一个三元素元组
2).RGB (RedAs Integer ,GreenAs Integer ,BlueAs Integer )
部分 | 部分 |
---|---|
red | 必要参数;Integer类型。数值范围从 0 到 255,表示颜色的红色成份 |
green | 必要参数;Integer类型。数值范围从 0 到 255,表示颜色的绿色成份 |
blue | 必要参数;Integer类型。数值范围从 0 到 255,表示颜色的蓝色成份 |
3).注意:
- 使用
turtle.colormode(mode)
来调整海龟的颜色,默认采用RGB小数值,可以切换为整数值 - 如果其中有一个参数的值超过 255 ,不会显示任何错误,但这个参数会被当做 255
3. 绘图命令方法
3.1 画笔运动方法
-
turtle.forward(distance)
-
turtle.backward(distance)
-
turtle.right(range)
-
turtle.left(range)
-
turtle.goto(x,y)
-
turtle.penup()
-
turtle.pendown()
-
turtle.speed()
-
turtle.circle(radius, extent=None, steps=None)
#绘制一个 radius 指定半径的圆。圆心在海龟左边 radius 个单位;extent 为一个夹角,用来决定绘制圆的一部分。如未指定 extent*则绘制整个圆。如果 *extent 不是完整圆周,则以当前画笔位置为一个端点绘制圆弧。如果 radius 为正值则朝逆时针方向绘制圆弧,否则朝顺时针方向。最终海龟的朝向会依据 extent 的值而改变。
3.2 画笔控制方法
- turtle.pensize(width=None)
- turtle.fillcolor(*args)
- turtle.color(*args)
- turtle.filling()
- turtle.begin_fill()
- turtle.end_fill()
- turtle.hideturtle()
- turtle.showturtle()
- turtle.tracers()
3.3 全局控制方法
- turtle.clear()
- turtle.reset()
- turtle.undo()
3.4 其他一些特殊方法
原文链接:https://blog.csdn.net/adminkeys/article/details/112713640
4. turtle库快速参考
5. 一些实例
5.1 画爱心
#------导入库------------
import turtle
#------定义子函数--------
def hart_arc():
for i in range(200):
turtle.right(1)
turtle.forward(1)
def move_pen_position(x,y):
turtle.hideturtle()
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
#--------主函数-----------
turtle.color('red')
turtle.begin_fill()
turtle.speed(100)
move_pen_position(x=0,y=-180)
turtle.left(140)
# 画爱心圆弧
turtle.forward(114)
hart_arc() # 左侧圆弧
turtle.left(120)
hart_arc() # 右侧圆弧
# 画心形直线( 右下方 )
turtle.forward(114)
turtle.end_fill()
# 点击窗口关闭程序
window = turtle.Screen()
window.exitonclick()
5.2画
6. 课堂内容
7. 课后作业
7.1 画微软logo
import turtle
#第一个正方形
turtle.speed(100)
turtle.color("white","green")
turtle.pensize(20)
turtle.begin_fill()
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.end_fill()
#第二个正方形
turtle.color("white","blue")
turtle.pensize(20)
turtle.begin_fill()
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.end_fill()
#第三个正方形
turtle.color("white","yellow")
turtle.pensize(20)
turtle.begin_fill()
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.right(90)
turtle.forward(150)
turtle.end_fill()
#第四个正方形
turtle.color("white","red")
turtle.pensize(20)
turtle.begin_fill()
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.left(90)
turtle.forward(150)
turtle.end_fill()
7.2 画一个五角星
import turtle
turtle.speed(100)
turtle.right(180)
turtle.penup()
turtle.forward(100)
turtle.color("red","red")
turtle.begin_fill()
turtle.pendown()
turtle.left(180)
turtle.forward(200)
turtle.right(180-36)
turtle.forward(200)
turtle.right(180-36)
turtle.forward(200)
turtle.right(180-36)
turtle.forward(200)
turtle.right(180-36)
turtle.forward(200)
turtle.end_fill()
turtle.hideturtle()
7.3心跳的感觉
#--------导入库--------
import turtle
#--------定位----------
turtle.speed(5)
turtle.hideturtle()
turtle.penup()
turtle.goto(-400,0)
turtle.pendown()
#出现
turtle.color("red")
for i in range(2):
turtle.forward(70)
turtle.left(84)
turtle.forward(150)
turtle.right(168)
turtle.forward(250)
turtle.left(168)
turtle.forward(150)
turtle.right(168)
turtle.forward(50)
turtle.left(84)
turtle.forward(50)
turtle.goto(0,0)
#------定义子函数--------
def hart_arc():
for i in range(200):
turtle.right(1)
turtle.forward(1)
def move_pen_position(x,y):
turtle.hideturtle()
turtle.penup()
turtle.goto(x, y)
turtle.pendown()
#--------主函数-----------
turtle.color('red')
turtle.speed(100)
move_pen_position(x=0,y=0)
turtle.left(140)
# 画爱心圆弧
turtle.forward(114)
hart_arc() # 左侧圆弧
turtle.left(120)
hart_arc() # 右侧圆弧
# 画心形直线( 右下方 )
turtle.forward(114)
turtle.left(100)
turtle.speed(5)
turtle.hideturtle()
turtle.forward(200)
turtle.color("red")
for i in range(2):
turtle.forward(70)
turtle.left(84)
turtle.forward(150)
turtle.right(168)
turtle.forward(250)
turtle.left(168)
turtle.forward(150)
turtle.right(168)
turtle.forward(50)
turtle.left(84)
turtle.forward(50)
7.4画国旗
#--------------- 载入库----------------
import turtle
#---------------子函数定义-------------
#-----画国旗面------
def pole(x,y,a,b,c):
turtle.hideturtle()
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
turtle.speed(0)
turtle.color("red","red")
turtle.begin_fill()
for i in range(2):
turtle.forward(a)
turtle.left(c)
turtle.forward(b)
turtle.left(c)
turtle.end_fill()
#------画星星-----
def star(x,y,angle,a,b):
turtle.penup()
turtle.goto(x,y)
turtle.pendown()
turtle.setheading(angle)
turtle.color("yellow","yellow")
turtle.begin_fill()
for i in range(5):
turtle.forward(a)
turtle.right(b)
turtle.end_fill()
#--------------- 主程序----------------
pole(-100,-300,288,192,90) #画旗面
star(-80,-160,0,60,144) #画大星星
star(-3,-130,25,15,144) #画小星星1
star(13,-160,25,15,144) #画小星星2
star(13,-190,25,15,144) #画小星星3
star(-3,-215,25,15,144) #画小星星4
w","yellow")
turtle.begin_fill()
for i in range(5):
turtle.forward(a)
turtle.right(b)
turtle.end_fill()
#--------------- 主程序----------------
pole(-100,-300,288,192,90) #画旗面
star(-80,-160,0,60,144) #画大星星
star(-3,-130,25,15,144) #画小星星1
star(13,-160,25,15,144) #画小星星2
star(13,-190,25,15,144) #画小星星3
star(-3,-215,25,15,144) #画小星星4