-
turtle
2021-01-17 21:59:37这里写目录标题turtle正方形菱形长菱形正五边形正六边形正八边形正十二边形 turtle 正方形 // 正方形 import turtle turtle.pensize(2) for i in range(4): turtle.fd(100) turtle.left(90) 菱形 // 菱形 import...turtle
正方形
// 正方形 import turtle turtle.pensize(2) for i in range(4): turtle.fd(100) turtle.left(90)
菱形
// 菱形 import turtle turtle.right(45) for i in range(4): turtle.fd(100) turtle.left(90)
长菱形
// 长菱形 import turtle turtle.right(-30) turtle.fd(100) turtle.right(60) turtle.fd(100) turtle.right(120) turtle.fd(100) turtle.right(60) turtle.fd(100) turtle.right(120)
正五边形
// 正五边形 import turtle turtle.pensize(2) d=0 for i in range(1,6): turtle.fd(100) d+=72 turtle.seth(d)
//
正六边形
// 正六边形 import turtle turtle.pensize(2) d=0 for i in range(1,7): turtle.fd(100) d+=60 turtle.seth(d)
正八边形
// 正八边形 import turtle d=0 for i in range(1,9): turtle.fd(100) d+=45 turtle.seth(d)
正十二边形
// 正十二边形 import turtle turtle.pensize(2) d=0 for i in range(1,13): turtle.fd(100) d+=30 turtle.seth(d)
-
Turtle
2019-12-04 21:56:20Turtle最早来自于LOGO语言,是专门用于小孩子学习编程的,通过编程模拟一只turtle(海龟)在画板上爬行绘制图案,后来很多高级语言都移植了海龟绘图,python从2.6之后也将turtle库加入了其内部库中。 Turtle绘画窗体...turtle介绍
Turtle最早来自于LOGO语言,是专门用于小孩子学习编程的,通过编程模拟一只turtle(海龟)在画板上爬行绘制图案,后来很多高级语言都移植了海龟绘图,python从2.6之后也将turtle库加入了其内部库中。
Turtle绘画窗体
turtle.setup(width,height,startx,starty)
setup的四个参数分别指的是
• width:窗体的宽度
• height:窗体的高度
• startx:窗体距离屏幕边缘的左边像素距离
• starty:窗体距离屏幕上面边缘的像素距离
其中,后两个参数是可选项,如果不填写该参数,窗口会默认显示在屏幕的正中间。
setup()也是可选的,只是需要定义窗口的大小及位置是才使用。使用turtle的setup函数,可以在屏幕中生成一个窗口(窗体),设置窗体的大小和位置,这个窗口就是画布的范围。
画布的最小单位是像素,屏幕的坐标系以左上角为原点(0,0)分布。
如图:
turtle空间坐标体系
绝对坐标
以屏幕中间为原点(0,0),形成四象限的坐标体系。
海龟坐标
turtle绘图的基础知识:
-
画布(canvas)
画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
设置画布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),参数分别为画布的宽(单位像素), 高, 背景颜色。
如:turtle.screensize(800,600, “green”)
turtle.screensize() #返回默认大小(400, 300)
turtle.setup(width=0.5, height=0.75, startx=None, starty=None),参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
如:turtle.setup(width=0.6,height=0.6)
turtle.setup(width,height,startx,starty) turtle.setup(width=800,height=800, startx=100, starty=100) -
画笔
2.1、画笔的状态
在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
2.2、画笔的属性
画笔(画笔的属性,颜色、画线的宽度等)
1) turtle.pensize():设置画笔的宽度;
2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", “red”,也可以是RGB 3元组。
3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,1-10数字越大越快,0的速度最快。
2.3 、绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
2.3.1、画笔的运动命令
turtle.forward(distance): 向当前画笔方向移动distance像素长度 turtle.backward(distance): 向当前画笔相反方向移动distance像素长度 turtle.right(degree): 顺时针移动degree° turtle.left(degree): 逆时针移动degree° turtle.penup(): 提起笔移动,不绘制图形,用于另起一个地方绘制 turtle.pendown(): 移动时绘制图形,缺省时也为绘制 turtle.goto(x,y: 将画笔移动到坐标为x,y的位置 turtle.circle(): 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 setx( ): 将当前x轴移动到指定位置 sety( ): 将当前y轴移动到指定位置 setheading(angle): 设置当前朝向为angle角度 home(): 设置当前画笔位置为原点,朝向东。 dot(r): 绘制一个指定直径和颜色的圆点
2.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形状
2.3.3、全局控制命令
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是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
2.3.4、其他命令
turtle.mainloop()或turtle.done():启动事件循环 -调用Tkinter的mainloop函数。必须是乌龟图形程序中的最后一个语句。 turtle.mode(mode=None):设置乌龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出模式,则返回当前模式。 turtle.delay(delay=None):设置或返回以毫秒为单位的绘图延迟。 turtle.begin_poly():开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。 turtle.end_poly():停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。 turtle.get_poly():返回最后记录的多边形。 turtle.pos():可以获得机器小乌龟的当前坐标(x,y) abs(turtle.pos()):可以获得机器小乌龟当前距离原点的直线距离(根据勾股定理计算)。经过若干次循环之后,机器小乌龟将再次经过原点(x=0,y=0),此时直线距离小于1,将跳出循环,程序执行结束。 turtle.ht():隐藏乌龟
-
-
Python绘图Turtle库详解
2017-08-02 17:36:45Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形...Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
turtle绘图的基础知识:
1. 画布(canvas)
画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。
设置画布大小
turtle.screensize(canvwidth=None, canvheight=None, bg=None),参数分别为画布的宽(单位像素), 高, 背景颜色。
如:turtle.screensize(800,600, "green")
turtle.screensize() #返回默认大小(400, 300)
turtle.setup(width=0.5, height=0.75, startx=None, starty=None),参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
如:turtle.setup(width=0.6,height=0.6)
turtle.setup(width=800,height=800, startx=100, starty=100)
2. 画笔
2.1 画笔的状态
在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
2.2 画笔的属性
画笔(画笔的属性,颜色、画线的宽度等)
1) turtle.pensize():设置画笔的宽度;
2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
2.3 绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
(1) 画笔运动命令
命令
说明
turtle.forward(distance)
向当前画笔方向移动distance像素长度
turtle.backward(distance)
向当前画笔相反方向移动distance像素长度
turtle.right(degree)
顺时针移动degree°
turtle.left(degree)
逆时针移动degree°
turtle.pendown()
移动时绘制图形,缺省时也为绘制
turtle.goto(x,y)
将画笔移动到坐标为x,y的位置
turtle.penup()
提起笔移动,不绘制图形,用于另起一个地方绘制
turtle.circle()
画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
setx( )
将当前x轴移动到指定位置
sety( )
将当前y轴移动到指定位置
setheading(angle)
设置当前朝向为angle角度
home()
设置当前画笔位置为原点,朝向东。
dot(r)
绘制一个指定直径和颜色的圆点
(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) 全局控制命令
命令
说明
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是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项
(4) 其他命令
命令
说明
turtle.mainloop()或turtle.done()
启动事件循环 -调用Tkinter的mainloop函数。
必须是乌龟图形程序中的最后一个语句。
turtle.mode(mode=None)
设置乌龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出模式,则返回当前模式。
模式
初始龟标题
正角度
standard
向右(东)
逆时针
logo
向上(北)
顺时针
turtle.delay(delay=None)
设置或返回以毫秒为单位的绘图延迟。
turtle.begin_poly()
开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。
turtle.get_poly()
返回最后记录的多边形。
3. 命令详解
3.1 turtle.circle(radius, extent=None, steps=None)
描述:以给定半径画圆
参数:
radius(半径):半径为正(负),表示圆心在画笔的左边(右边)画圆;
extent(弧度) (optional);
steps (optional) (做半径为radius的圆的内切正多边形,多边形边数为steps)。
举例:
circle(50) # 整圆;
circle(50,steps=3) # 三角形;
circle(120, 180) # 半圆
实例:
1、太阳花
# coding=utf-8 import turtle import time # 同时设置pencolor=color1, fillcolor=color2 turtle.color("red", "yellow") turtle.begin_fill() for _ in range(50): turtle.forward(200) turtle.left(170) turtle.end_fill() turtle.mainloop()
2、五角星
# coding=utf-8 import turtle import time turtle.pensize(5) turtle.pencolor("yellow") turtle.fillcolor("red") turtle.begin_fill() for _ in range(5): turtle.forward(200) turtle.right(144) turtle.end_fill() time.sleep(2) turtle.penup() turtle.goto(-150,-120) turtle.color("violet") turtle.write("Done", font=('Arial', 40, 'normal')) turtle.mainloop()
3、时钟程序
# coding=utf-8 import turtle from datetime import * # 抬起画笔,向前运动一段距离放下 def Skip(step): turtle.penup() turtle.forward(step) turtle.pendown() def mkHand(name, length): # 注册Turtle形状,建立表针Turtle turtle.reset() Skip(-length * 0.1) # 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。 turtle.begin_poly() turtle.forward(length * 1.1) # 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。 turtle.end_poly() # 返回最后记录的多边形。 handForm = turtle.get_poly() turtle.register_shape(name, handForm) def Init(): global secHand, minHand, hurHand, printer # 重置Turtle指向北 turtle.mode("logo") # 建立三个表针Turtle并初始化 mkHand("secHand", 135) mkHand("minHand", 125) mkHand("hurHand", 90) secHand = turtle.Turtle() secHand.shape("secHand") minHand = turtle.Turtle() minHand.shape("minHand") hurHand = turtle.Turtle() hurHand.shape("hurHand") for hand in secHand, minHand, hurHand: hand.shapesize(1, 1, 3) hand.speed(0) # 建立输出文字Turtle printer = turtle.Turtle() # 隐藏画笔的turtle形状 printer.hideturtle() printer.penup() def SetupClock(radius): # 建立表的外框 turtle.reset() turtle.pensize(7) for i in range(60): Skip(radius) if i % 5 == 0: turtle.forward(20) Skip(-radius - 20) Skip(radius + 20) if i == 0: turtle.write(int(12), align="center", font=("Courier", 14, "bold")) elif i == 30: Skip(25) turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) Skip(-25) elif (i == 25 or i == 35): Skip(20) turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) Skip(-20) else: turtle.write(int(i/5), align="center", font=("Courier", 14, "bold")) Skip(-radius - 20) else: turtle.dot(5) Skip(-radius) turtle.right(6) def Week(t): week = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"] return week[t.weekday()] def Date(t): y = t.year m = t.month d = t.day return "%s %d%d" % (y, m, d) def Tick(): # 绘制表针的动态显示 t = datetime.today() second = t.second + t.microsecond * 0.000001 minute = t.minute + second / 60.0 hour = t.hour + minute / 60.0 secHand.setheading(6 * second) minHand.setheading(6 * minute) hurHand.setheading(30 * hour) turtle.tracer(False) printer.forward(65) printer.write(Week(t), align="center", font=("Courier", 14, "bold")) printer.back(130) printer.write(Date(t), align="center", font=("Courier", 14, "bold")) printer.home() turtle.tracer(True) # 100ms后继续调用tick turtle.ontimer(Tick, 100) def main(): # 打开/关闭龟动画,并为更新图纸设置延迟。 turtle.tracer(False) Init() SetupClock(160) turtle.tracer(True) Tick() turtle.mainloop() if __name__ == "__main__": main()
-
turtle.Turtle是什么意思
2017-08-26 06:39:06turtle.Turtle是什么意思 turtle库中好像没有这个啊 -
python库之turtle库官方文档入门
2019-08-15 13:10:48官方文档二、函数纵览1.Turtle methods(1)Turtle motion三、turtle绘图窗体布局三、turtle空间坐标体系四、turtle角度坐标体系五、RGB色彩模式:六、turtle画笔控制函数七、其他命令八、例子1.太阳花2.七段数码管 ...
一、turtle库
1.基本介绍
turtle库:
-
(1)1969年诞生
-
(2)Python语言的标准库之一
-
(3)入门级的图形绘制函数库
2.turtle绘图原理
turtle海龟走过的轨迹绘制成了图形
3.官方文档
https://docs.python.org/3/library/turtle.html
二、turtle构建体系
1.turtle绘图窗体布局
(1)最小单位是像素,左上角是(0,0)
(2)startx与starty:绘图窗体出现在屏幕的哪里,后两个参数可选,默认正中心
2.绝对坐标
绝对坐标:就是标准的xOy坐标系,上y右x,中央点是(0,0)3.海龟坐标
standard模式下(默认):头朝的方向就是前方:如当龟头朝右时,右侧就为前方。开始默认头朝右.4.turtle角度坐标体系
角度坐标体系:就是数学上的坐标轴角度,绕x轴逆时针角度从0°到360°
(1)turtle.setheading(angle) 别名turtle.seth(angle):只改变方向不行进。如turtle.seth(90):海龟的朝向为90度
注意:与当前海龟头的朝向没有关系,90度就一定向上
(2)turtle.left(angle)与turtle.right(angle):在海龟当前头的方向上再向左/右转多少度
三、函数纵览
1.海龟方法
(1)海龟动作
(2)画笔控制
(3)海龟状态
(4)使用事件
(5)特殊的海龟方法
2.TurtleScreen / Screen的方法
四、海龟方法详解
1.海龟动作
(1)移动和绘制
turtle.forward(distance) turtle.fd(distance)
参数:
distance – 一个数值 (整型或浮点型)作用:
海龟前进 distance 指定的距离,方向为海龟的朝向
turtle.back(distance) turtle.bk(distance) turtle.backward(distance)
参数:
distance – 一个数值作用:
海龟后退 distance 指定的距离,方向与海龟的朝向相反。不改变海龟的朝向
turtle.right(angle) turtle.rt(angle)
参数:
angle – 一个数值 (整型或浮点型)作用:
海龟右转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。)
turtle.left(angle) turtle.lt(angle)
参数:
angle – 一个数值 (整型或浮点型)作用:
海龟左转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。)
turtle.goto(x, y=None) turtle.setpos(x, y=None) turtle.setposition(x, y=None)
参数:
- x – 一个数值或数值对/向量
- y – 一个数值或 None
如果 y 为 None,x 应为一个表示坐标的数值对或 Vec2D 类对象 (例如 pos() 返回的对象).
作用:
海龟移动到一个绝对坐标。如果画笔已落下将会画线。不改变海龟的朝向。例子:
# x和y turtle.setpos(60,30) # x为元组 turtle.setpos((20,80)) # x为pos()返回的元组 tp = turtle.pos() turtle.setpos(tp)
turtle.setx(x)
参数:
x – 一个数值 (整型或浮点型)作用:
设置海龟的横坐标为 x,纵坐标保持不变。
turtle.sety(y)
参数:
y – 一个数值 (整型或浮点型)作用:
设置海龟的纵坐标为 y,横坐标保持不变。
turtle.setheading(to_angle) turtle.seth(to_angle)
参数:
to_angle – 一个数值 (整型或浮点型)作用:
设置海龟的朝向为 to_angle。
turtle.home()
作用:
海龟移至初始坐标 (0,0),并设置朝向为初始方向 (由海龟模式确定,参见 mode())。
turtle.circle(radius, extent=None, steps=None)
参数:
-
radius – 一个数值 (整型或浮点型),表示半径
如果 radius 为正值则圆心在乌龟头的左边,否则圆心在乌龟头的右边。 -
extent – 一个数值 (整型或浮点型),表示角度
如未指定 extent则绘制整个圆,指定角度(可以大于360°)则绘制圆弧。
如果 radius 为正值则按乌龟的前进的方向,否则按乌龟的倒退的方向。 -
steps – 一个整型数
如未指定 steps则绘制圆弧,指定则绘制多边形(边数大于0)。
作用:
绘制一个 radius 指定半径的多边形部分。例子:
# 绘制在左边的、按前进方向的 import turtle turtle.circle(50,270) turtle.done()
# 绘制在右边的、按前进方向的 import turtle turtle.circle(50,270) turtle.done()
# 绘制在左边的、按后退方向的 import turtle turtle.circle(50,270) turtle.done()
# 绘制在右边的、按后退方向的 import turtle turtle.circle(50,270) turtle.done()
# 绘制三角形 import turtle turtle.circle(50,360,3) turtle.done()
turtle.dot(size=None, *color)
参数:
- size – 一个整型数 >= 1 (如果指定)
如果 size 未指定,则直径取 pensize+4 和 2*pensize 中的最大值。 - color – 一个颜色字符串或颜色数值元组
未指定则是画笔颜色。
作用:
绘制一个直径为 size,颜色为 color 的圆点。例子:
turtle.dot()
,turtle.dot(50)
,turtle.dot("blue")
,turtle.dot(50,"blue")
import turtle turtle.dot(50,"blue") turtle.done()
turtle.undo()
作用:
撤消 (或连续撤消) 最近的一个 (或多个) 海龟动作。可撤消的次数由撤消缓冲区的大小决定。
turtle.speed(speed=None)
参数:
- speed – 一个 0到10 范围内的整型数或速度字符串
- 无参:返回当前海龟的速度
speed对应表:
如果输入数值大于 10 或小于 0.5 则速度设为 0。字符串 数字 含义 “fastest” 0 最快 “fast” 10 快 “normal” 6 正常 “slow” 3 慢 “slowest” 1 最慢 速度值从 1 到 10,画线和海龟转向的动画效果逐级加快。speed = 0 表示没有动画效果(转向),但绘制还是需要时间,最快。
作用:
设置海龟移动的速度或返回当前海龟的速度。(2)获取海龟状态
turtle.position() turtle.pos()
作用:
返回海龟当前的坐标 (x,y) (为 Vec2D 矢量类对象)。
turtle.towards(x, y=None)
参数:
- x – 一个数值或数值对/矢量,或一个海龟实例
- y – 一个数值——如果 x 是一个数值,否则为 None
返回一个角度,从海龟位置到到 (x,y)的矢量到海龟初始朝向的矢量的夹角。
例子:
import turtle turtle.goto(50,50) print(turtle.towards(0,0)) turtle.done() # 225.0 # 海龟朝向0°,从(50,50)到(0,0)的矢量朝向225°,两者相差225.0
turtle.xcor()
作用:
返回海龟的 x 坐标。
turtle.ycor()
作用:
返回海龟的 y 坐标。
turtle.heading()
作用:
返回海龟当前的朝向的角度
turtle.distance(x, y=None)
参数:
- x – 一个数值或数值对/矢量,或一个海龟实例
- y – 一个数值——如果 x 是一个数值,否则为 None
返回从海龟位置到 (x,y)的单位距离。
(3)度量单位设置
turtle.degrees(fullcircle=360.0)
参数:
fullcircle – 一个数值作用:
设置一个圆周为多少 “度”。默认值为 360 度。>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> turtle.degrees(400.0) >>> turtle.heading() 100.0 # 原来的朝向占一个圆的四分之一,90/360。现在,还要占四分之一,那就是400/4=100°
turtle.radians()
设置角度的度量单位为弧度。其值等于 。
>>> turtle.home() >>> turtle.left(90) >>> turtle.heading() 90.0 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966 # 90/180*3.14=1.57...
2.画笔控制
(1)绘图状态
turtle.pendown() turtle.pd() turtle.down()
作用:
画笔落下 – 移动时将画线。
turtle.penup() turtle.pu() turtle.up()
作用:
画笔抬起 – 移动时不画线。
turtle.pensize(width=None) turtle.width(width=None)
参数:
- width – 一个正数值
- 无参:返回画笔的线条粗细。
作用:
设置线条的粗细为 width 或返回该值。
turtle.isdown()
作用:
如果画笔落下返回 True,如果画笔抬起返回 False。(2)颜色控制
turtle.pencolor(*args)
参数:
-
pencolor()
返回表示当前画笔颜色的颜色描述字符串或元组。 -
pencolor(colorstring)
设置画笔颜色为 colorstring 指定的 Tk 颜色描述字符串。
如:turtle.pencolor("brown")
或turtle.pencolor('#32c18f')
-
pencolor((r, g, b))
设置画笔颜色为以 r, g, b 元组表示的 RGB 颜色。r, g, b 的取值范围应为0…colormode。
如:turtle.pencolor((0.2, 0.8, 0.55))
或turtle.pencolor((51.0, 204.0, 140.0))
-
pencolor(r, g, b)
设置画笔颜色为以 r, g, b 表示的 RGB 颜色。r, g, b 的取值范围应为 0…colormode。
如:turtle.pencolor(0.2, 0.8, 0.55)
或turtle.pencolor(51.0, 204.0, 140.0)
作用:
返回或设置画笔颜色。
turtle.fillcolor(*args)
参数:同
turtle.pencolor(*args)
fillcolor()
fillcolor(colorstring)
fillcolor((r, g, b))
fillcolor(r, g, b)
作用:
返回或设置填充颜色。
turtle.color(*args)
参数:
-
color()
返回以一对颜色描述字符串或元组表示的画笔颜色和填充颜色,两者可分别由 pencolor() 和 fillcolor() 返回。 -
color(colorstring), color((r,g,b)), color(r,g,b)
同时设置填充颜色和画笔颜色为指定的值。 -
color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2))
相当于pencolor(colorstring1)
加fillcolor(colorstring2)
作用:
返回或设置画笔颜色和填充颜色。(3)填充
turtle.filling()
作用:
返回填充状态 (填充为 True,否则为 False)。
turtle.begin_fill()
作用:
在绘制要填充的形状之前调用。要配合turtle.end_fill()
使用。
turtle.end_fill()
作用:
填充上次调用 begin_fill() 之后绘制的形状。要配合turtle.begin_fill()
使用。例子:
import turtle turtle.color("black", "red") turtle.begin_fill() turtle.circle(80) turtle.end_fill() turtle.done()
(4)更多绘图控制
turtle.reset()
作用:
从屏幕中删除海龟的绘图,海龟回到原点并设置所有变量为默认值。
turtle.clear()
作用:
从屏幕中删除指定海龟的绘图。不移动海龟。海龟的状态和位置以及其他海龟的绘图不受影响。turtle.write(arg, move=False, align="left", font=("Arial", 8, "normal"))
参数:
-
arg – 要书写到 TurtleScreen 的对象
如:"something"
,123
,(1,2)
,[1,2,3]
等 -
move – True/False
如果 move 为 True,画笔会移动到文本的右下角,这样文字就不会叠在一块了。 -
align – 字符串 “left”, “center” 或 “right”
align 指定对齐方式 (“left”, “center” 或 right") -
font – 一个三元组 (fontname, fontsize, fonttype)
font 指定字体
书写文本 - arg 指定的字符串 - 到当前海龟位置。
例子:
import turtle turtle.write("Home = ",True, align="center") turtle.write( [123,456], True) turtle.done()
3.海龟状态
(1)可见性
turtle.hideturtle() turtle.ht()
作用:
使海龟不可见。当你绘制复杂图形时这是个好主意,因为隐藏海龟可显著加快绘制速度。
turtle.showturtle() turtle.st()
作用:
使海龟可见。
turtle.isvisible()
作用:
如果海龟显示返回 True,如果海龟隐藏返回 False。(2)外观
turtle.shape(name=None)
参数:
- name – 一个有效的形状名字符串
- 无参:返回当前的形状名
设置海龟形状或返回当前的形状名。
形状名 图形 “arrow” “blank”(透明) “turtle” “circle” “square” “triangle” “classic”
turtle.register_shape(name, shape=None) turtle.addshape(name, shape=None)
调用此函数有三种不同方式:
-
name 为一个 gif 文件的文件名, shape 为 None: 安装相应的图像形状。:
注解:当海龟转向时图像形状 不会 转动,因此无法显示海龟的朝向! -
name 为指定的字符串,shape 为由坐标值对构成的元组: 安装相应的多边形形状。
import turtle turtle.register_shape("myshape", ((-20,20), (0,-10), (50,0))) turtle.shape("myshape") turtle.done()
- name 为指定的字符串, 为一个 (复合) Shape 类对象: 安装相应的复合形状。
作用:
将一个海龟形状加入 TurtleScreen 的形状列表。只有这样注册过的形状才能通过执行 shape(shapename) 命令来使用。4.使用事件
turtle.onclick(fun, btn=1, add=None)
参数:
-
fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。
如果 fun 值为 None,则移除现有的绑定。 -
btn – 鼠标按钮编号,默认值为 1 (鼠标左键)
左中右:1,2,3 -
add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定
作用:
将 fun 指定的函数绑定到鼠标点击此海龟引发事件或移除绑定。(注意,不是随便点,是点击海龟)例子:
import turtle def turtlefd(x,y): turtle.fd(100) turtle.onclick(turtlefd) turtle.done()
turtle.onrelease(fun, btn=1, add=None)
参数:
-
fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。
如果 fun 值为 None,则移除现有的绑定。 -
btn – 鼠标按钮编号,默认值为 1 (鼠标左键)
-
add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定
作用:
将 fun 指定的函数绑定到在此海龟上释放鼠标按键事件。(注意,在海龟上点击后释放鼠标才有效,在别的地方点击把鼠标拖过来释放无效)
turtle.ondrag(fun, btn=1, add=None)
参数:
-
fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。
如果 fun 值为 None,则移除现有的绑定。 -
btn – 鼠标按钮编号,默认值为 1 (鼠标左键)
-
add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定
作用:
将 fun 指定的函数绑定到在此海龟上移动鼠标事件。例子:在此之后点击并拖动海龟可在屏幕上手绘线条 (如果画笔为落下)
import turtle def turtlefd(x,y): turtle.goto(x,y) turtle.ondrag(turtlefd) turtle.done()
5.特殊海龟方法
turtle.begin_poly()
开始记录多边形的顶点。当前海龟位置为多边形的第一个顶点。
turtle.end_poly()
停止记录多边形的顶点。当前海龟位置为多边形的最后一个顶点。它将连线到第一个顶点。
turtle.get_poly()
返回最新记录的多边形。
五、TurtleScreen/Screen 方法详解
1.窗口控制
turtle.bgcolor(*args)
参数:
同turtle.pencolor(*args)
作用:
设置或返回 TurtleScreen 的背景颜色。
turtle.bgpic(picname=None)
参数:
- picname – 一个字符串, gif-文件名, “nopic”, 或 None
如果 picname 为一个文件名,则将相应图片设为背景。
如果 picname 为 “nopic”,则删除当前背景图片。
如果 picname 为 None,则返回当前背景图片文件名。
作用:
设置背景图片或删除背景或返回当前背景图片名称。PS:路径还是“\”或“/”,https://blog.csdn.net/sandalphon4869/article/details/86767978
turtle.reset() turtle.resetscreen()
作用:
删除所有海龟的全部绘图,重置屏幕上的所有海龟为其初始状态。
turtle.clear() turtle.clearscreen()
作用:
不仅达到turtle.reset()
的作用,而且删除背景片成白色背景,无事件绑定并启用追踪。
turtle.screensize(canvwidth=None, canvheight=None, bg=None)
参数:
-
canvwidth – 正整型数,以像素表示画布的新宽度值
这个值可以超过电脑屏幕的尺寸,可以展示一副超大的画布。 -
canvheight – 正整型数,以像素表示画面的新高度值
这个值可以超过电脑屏幕的尺寸,可以展示一副超大的画布。 -
bg – 颜色字符串或颜色元组,新的背景颜色
作用:
- 如未指定任何参数,则返回当前的 (canvaswidth, canvasheight)。
- 否则改变作为海龟绘图场所的画布大小。(通过此方法可以令之前绘制于画布之外的图形变为可见。可以使用滚动条观察画布的隐藏区域.)
PS:
画布大小还是以画布中心点为中心的,而且这个滑动条可以滑动展示的区域是展示图形的那个画布大小,而不是能一直无限地拖动。2.动画控制
turtle.delay(delay=None)
参数:
- delay – 正整型数
- 无参返回以毫秒数表示的延迟值 delay
作用:
设置或返回以毫秒数表示的延迟值 delay。(这约等于连续两次画布刷新的间隔时间。) 绘图延迟越长,动画速度越慢。
turtle.tracer(n=None, delay=None)
参数:
-
n – 非负整型数
如果指定 n 值,则只有每第 n 次屏幕刷新会实际执行。(可被用来加速复杂图形的绘制。)
如果调用时不带参数,则返回当前保存的 n 值。 -
delay – 非负整型数
第二个参数设置延迟值 (参见 delay())。
作用:
启用/禁用海龟动画并设置刷新图形的延迟时间。
turtle.update()
作用:
执行一次 TurtleScreen 刷新。在禁用追踪时使用。3.使用屏幕事件
turtle.listen(xdummy=None, ydummy=None)
作用:
设置焦点到 TurtleScreen (以便接收按键事件)。使用两个 Dummy 参数以便能够传递 listen() 给 onclick 方法。
turtle.onkeypress(fun, key=None)
参数:
-
fun – 一个无参数的函数或 None
如果 fun 值为 None,则移除事件绑定。 -
key – 一个字符串: 键 (例如 “a”) 或键标 (例如 “space”)
如未指定键则绑定到任意键的按下事件。
作用:
绑定 fun 指定的函数到指定键的按下事件。注: 为了能够注册按键事件,必须得到焦点。(参见 listen() 方法。)例子:
#按方向上键画正方形(可以一直按进行快速移动) import turtle def f(): turtle.fd(100) turtle.left(90) turtle.speed(0) turtle.listen() turtle.onkeypress(f,"Up") #解除绑定 turtle.onkeypress(None,"Up") turtle.done()
turtle.onkey(fun, key) turtle.onkeyrelease(fun, key)
参数:
-
fun – 一个无参数的函数或 None
如果 fun 值为 None,则移除事件绑定。 -
key – 一个字符串: 键 (例如 “a”) 或键标 (例如 “space”)
作用:
绑定 fun 指定的函数到按键按下并释放事件。
注: 为了能够注册按键事件,TurtleScreen 必须得到焦点。(参见listen() 方法)例子:
#按方向上键释放后开始画正方形 import turtle def f(): turtle.fd(100) turtle.left(90) turtle.speed(0) turtle.listen() turtle.onkey(f,"Up") #解除绑定 turtle.onkey(None,"Up") turtle.done()
turtle.onscreenclick(fun, btn=1, add=None)
参数:
-
fun – 一个函数,调用时将传入两个参数表示在画布上点击的坐标。
如果 fun 值为 None,则移除现有的绑定。 -
btn – 鼠标按钮编号,默认值为 1 (鼠标左键)
-
add – True 或 False – 如为 True 则将添加一个新绑定,否则将取代先前的绑定
作用:
绑定 fun 指定的函数到鼠标点击屏幕事件。PS:
turtle.onclick()
和turtle.onscreenclick()
不一样,前者是只有点击到海龟身上才行,后者是点击画布任意区域就行。例子:
#点击画布任意区域,海龟移动到那里 import turtle def f(x,y): turtle.goto(x,y) turtle.onscreenclick(f) turtle.done()
turtle.ontimer(fun, t=0)
参数:
-
fun – 一个无参数的函数
-
t – 一个数值 >= 0
作用:
安装一个计时器,在 t 毫秒后调用 fun 函数。例子:
import turtle def f(): turtle.fd(100) turtle.ontimer(f,100) turtle.done()
turtle.mainloop() turtle.done()
必须作为一个海龟绘图程序的结束语句。要不然程序会无响应。
4.设置与特殊方法
turtle.mode(mode=None)
参数:
- mode – 字符串 “standard”, “logo” 或 “world” 其中之一
- 无参:如未指定模式则返回当前的模式。
作用:
设置海龟模式 (“standard”, “logo” 或 “world”) 并执行重置。模式 初始海龟朝向 正数角度 “standard” 朝右 (东) 逆时针 “logo” 朝上 (北) 顺时针
turtle.colormode(cmode=None)
参数:
- cmode – 数值 1.0 或 255 其中之一
- 无参:返回colormode
作用:
返回颜色模式或将其设为 1.0 或 255。构成颜色三元组的 r, g, b 数值必须在 0…cmode 范围之内,否则报错例子:
import turtle turtle.pensize(10) turtle.colormode(1.0) turtle.pencolor(0.1,0.2,0.3) turtle.fd(100) turtle.colormode(255) turtle.pencolor(200,20,133) turtle.fd(100) turtle.done()
turtle.window_height()
返回海龟窗口的高度。:
turtle.window_width()
返回海龟窗口的宽度。
5.输入方法
turtle.textinput(title, prompt)
参数:
-
title – 字符串
形参 title 为对话框窗口的标题 -
prompt – 字符串
prompt 为一条文本,通常用来提示要输入什么信息
作用:
弹出一个对话框窗口用来输入一个字符串,并返回输入的字符串。如果对话框被取消则返回 None。:例子
import turtle str=turtle.textinput("Hello","what's your ID?") print(str) turtle.done()
turtle.numinput(title, prompt, default=None, minval=None, maxval=None)
参数:
-
title – 字符串
title 为对话框窗口的标题 -
prompt – 字符串
prompt 为一条文本,通常用来描述要输入的数值信息。 -
default – 数值 (可选)
默认值 -
minval – 数值 (可选)
可输入的最小值 -
maxval – 数值 (可选)
可输入的最大值。
输入数值的必须在指定的 minval … maxval 范围之内,否则将给出一条提示,对话框保持打开等待修改。
作用:
弹出一个对话框窗口用来输入一个数值。返回输入的数值。如果对话框被取消则返回 None。例子:
import turtle num=turtle.numinput("Hello","what's your ID?",34,1,100) print(num) turtle.done()
6.Screen 专有方法
turtle.bye()
作用:
关闭海龟绘图窗口。
turtle.exitonclick()
作用:
将 bye() 方法绑定到 Screen 上,鼠标点击屏幕退出。
turtle.setup(width=_CFG["width"], height=_CFG["height"], startx=_CFG["leftright"], starty=_CFG["topbottom"])
作用:
设置主窗口的大小和位置。默认参数值保存在配置字典中,可通过 turtle.cfg 文件进行修改。参数:
-
width – 如为一个整型数值,表示大小为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 50%
-
height – 如为一个整型数值,表示高度为多少像素,如为一个浮点数值,则表示屏幕的占比;默认为屏幕的 75%
-
startx – 如为正值,表示初始位置距离屏幕左边缘多少像素,负值表示距离右边缘,None 表示窗口水平居中
-
starty – 如为正值,表示初始位置距离屏幕上边缘多少像素,负值表示距离下边缘,None 表示窗口垂直居中
八、总结
1.最快的画笔速度
- 快:画笔速度为最快,但其实还是保留了绘制的过程
turtle.speed(0)
- 更快:不仅画笔速度快,更省略了绘画过程的延迟
turtle.speed(0) turtle.delay(0)
- 超快:不展现绘制过程,所以超快
turtle.tracer(0)
比较的例子:
# 快 import turtle turtle.speed(0) turtle.pensize(2) turtle.bgcolor("black") colors=["red","blue","yellow","purple"] for x in range(300): turtle.color(colors[x%4]) turtle.forward(2*x) turtle.left(91) turtle.done()
# 更快 import turtle turtle.speed(0) turtle.delay(0) turtle.pensize(2) turtle.bgcolor("black") colors=["red","blue","yellow","purple"] for x in range(300): turtle.color(colors[x%4]) turtle.forward(2*x) turtle.left(91) turtle.done()
# 超快 import turtle turtle.tracer(0) turtle.pensize(2) turtle.bgcolor("black") colors=["red","blue","yellow","purple"] for x in range(300): turtle.color(colors[x%4]) turtle.forward(2*x) turtle.left(91) turtle.done()
2.类的使用
import turtle def bye(x,y): turtle.bye() s = turtle.Screen() s.bgcolor("black") s.screensize(800,800) s.title("Class Using") s.onscreenclick(bye) p=turtle.Turtle() p.speed(0) p.hideturtle() p.pencolor("red") p.pensize(3) p.circle(50,360,6) turtle.done()
九、例子
https://blog.csdn.net/sandalphon4869/article/details/99632566
参考:
https://blog.csdn.net/zengxiantao1994/article/details/76588580
8小时Python零基础轻松入门
-
-
Python使用Turtle图形函数画图 颜色填充!(学习笔记)
2018-12-19 13:55:20turtle:海龟先生的意思。 Python老是用动物的名字! 首先要引入呀! 不引入当然是不可以用的呀! turtle.forward(100):效果图 鼠标前进100步! 后退的话,鼠标就又回来啦! 当然也可以向右向左!... -
turtle库
2020-06-01 16:22:10import turtle turtle.setup(650, 350, 200, 200) turtle.penup() turtle.fd(-250) turtle.pendown() turtle.pensize(25) turtle.pencolor("purple") turtle.seth(-40) for i in range(4): turtle.circle(40, 80) ... -
turtle画心
2020-03-02 21:09:50python课第一次作业,利用python的turtle库画了 “一箭穿心” 有点简陋 import turtle turtle.bgcolor("black") turtle.pensize(2) turtle.color("red", "pink") # 填充心 turtle.begin_fill() turtle.left(140) ... -
python:turtle绘制纸飞机
2020-02-24 21:57:58闲来无事,只好细细研究turtle库了,毕竟这是一个超好玩的图形库了,虽然现在还仅仅是一个菜鸟中的菜鸟,但这也并不能阻止我前行的道路…… 之前呢,有介绍过用turtle库来绘制奥运五环,虽然花费了我整整一个晚上的... -
小猪佩奇import turtle
2020-02-28 12:03:32小猪佩奇import turtle # 设置初始位置 turtle.penup() turtle.left(90) turtle.fd(200) turtle.pendown() turtle.right(90) # 花蕊 turtle.fillcolor("red") turtle.begin_fill() turtle.circle(10,180) turtle... -
turtle 安装
2018-07-30 14:00:27Python3安装turtle提示错误:Command "python setup.py egg_info" failed with error code 1 Python3.5安装turtle: pip3 install turtle 提示错误: Collecting turtle Using cached ... -
Turtle Graphics
2019-07-24 08:13:10Turtle graphics is an interesting and easy way to learn basic programming concepts. The Python turtle graphics system simulates a “turtle” that obeys commands to draw simple graphics. import the ... -
python之turtle库学习(海龟图形)
2018-05-08 17:54:00python之turtle库学习 这两天在一个公众号里看到一个文章好玩的库,今天来学习一下。Github地址 一。方法 1.forward() | fd():向前移动指定的距离。参数:一个数字(integer or float))。 turtle.forward(25) ... -
turtle安装
2018-12-23 11:34:44在安装turtle时遇到如下麻烦: 解决的办法就是:https://files.pythonhosted.org/packages/ff/f0/21a42e9e424d24bdd0e509d5ed3c7dfb8f47d962d9c044dba903b0b4a26f/turtle-0.0.2.tar.gz,把turtle包下载到本地,... -
python turtle
2018-05-14 15:28:26import turtle '''turtle.setup(1800,1204,0,0)#窗口 (宽,高,位置(0,0)在左上角) turtle.pensize(10) turtle.pencolor('yellow') turtle.seth(-60)#运行方向 turtle.fd(80) turtle.circle(-90,400)''' def main(): ... -
turtle教程
2018-11-21 23:18:26Turtle格式介绍 在网上找了很久,就是没有介绍turtle格式标准的中文教程。 所以就照着英文版的turtle格式说明,加上自己的理解,写了这篇blog. 一般是用RDF(Resource Description Framework)模型,对知识图谱进行... -
turtle作图作品
2018-06-25 17:56:08利用python3标准turtle库制作的图片, 参观 绘图方式和Pygame有很大不同,Pygame是通过场景与场景的快速变换体现事物的变化,而Turtle更像我们生活中的绘画,每一画依次完成。假设一个机器人在(0,0),我们对其有各种... -
turtle模块
2018-06-10 16:14:42用Python的turtle模块画国旗[日期:2016-10-16] 来源:Linux社区 作者: 方辰1993 [字体:大 中 小] 最近在学Python,发现Python的海龟绘图非常有趣,就分享一下!话不多说,先来Python turtle的官方文档链接... -
python之意外发现turtle的强大
2019-06-20 18:19:24闲来无事,上网闲逛,无意中发现了turtle这个库,于是各种百度去了解,才知道这库niu bi啊,居然可以画画!!!! 1、turtle安装 python3的话直接输入 pip install turtle 哈哈,是不是报错:Command “python ... -
turtle 作图
2018-03-03 16:56:57import turtle turtle.pensize(55) turtle.screensize(300) t = turtle.Pen() t.pencolor(“red”) for x in range(30,1000,3): t.forward(x) t.left(90) 3为步长 画八角星 import turtle tur... -
Turtle库
2017-12-10 23:21:35Turtle库是Python语言中一个很流行的绘制图像的函数库turtle.setup(width,height,startx,starty),画布默认坐标原点为画布中心。 turtle.pensize()函数表示小乌龟运动轨迹的宽度。turtle.pencolor()函数表示小乌龟... -
python turtle绘图-案例集锦(小猪佩奇、哆啦A梦、小黄人、樱花树、皮卡丘、汉诺塔、高达、星空等)
2019-08-14 10:31:24绘图之前先要安装turtle模块 python 2: pip install turtle python 3: pip3 install turtle 1.小猪佩奇: #!/usr/bin/env python2 # coding=utf-8 import turtle as t t.pensize(4) t.hideturtle() t.colormode... -
turtle练习
2017-09-08 12:05:00import turtle >>> turtle.circle(20)>>> turtle.up()>>> turtle.goto(0,10)>>> turtle.goto(0,-10)>>> turtle.circle (30)>>> turtle.d... -
turtle作业
2017-09-08 11:33:00import turtle>>> turtle.circle(10)>>> turtle.circle(20)>>> turtle.circle(30)>>> turtle.circle(40) 画一组同心圆>>> turtle.circle(100)>>...