赞
踩
海龟图形是向孩子们介绍编程的一种流行方式。他起源在 1967 年开发的原始 Logo 编程语言的一部分。这种库的作图极有个性,必须将其推荐给大家。
想象一只机器乌龟在 x-y 平面中从 (0, 0) 开始。导入海龟后,给它命令 turtle.forward(15),它会(在屏幕上!)朝它所面对的方向移动 15 个像素,并在移动时画一条线。给它命令 turtle.right(25),它原地顺时针旋转 25 度。
命令 | 说明 |
turtle.forward(distance) | 向当前画笔方向移动distance像素长度 |
turtle.backward(distance) | 向当前画笔相反方向移动distance像素长度 |
turtle.right(degree) | 顺时针移动degree° |
turtle.left(degree) | 逆时针移动degree° |
turtle.pendown() | 移动时绘制图形,缺省时也为绘制 |
turtle.goto(x,y) |setpos() | setposition() 前往/定位 | 将画笔移动到坐标为x,y的位置 |
turtle.penup() | 提起笔移动,不绘制图形,用于另起一个地方绘制 |
turtle.circle() | 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 |
turtle.setx( ) | 将当前x轴移动到指定位置 |
turtle.sety( ) | 将当前y轴移动到指定位置 |
turtle.setheading(angle) | 设置当前朝向为angle角度 |
turtle.home() | 设置(返回)当前画笔位置为原点,朝向东。 |
turtle.dot(r) | 绘制一个指定直径和颜色的圆点 |
turtle.stamp() | 印章 |
turtle.clearstamp() | 清除印章 |
turtle.clearstamps() | 清除多个印章 |
turtle.undo() | 撤消 |
turtle.speed() | 速度 |
1)绘图状态
2)颜色控制
3)填充
4)更多绘图控制
1)可见性
命令 | 说明 |
turtle.hideturtle() | 隐藏画笔的turtle形状 |
turtle.showturtle() | 显示画笔的turtle形状 |
isvisible() | 是否可见 |
2)外观
shape() 形状
命令 | 说明 |
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参数也是可选项 |
begin_poly() 开始记录多边形
end_poly() 结束记录多边形
get_poly() 获取多边形
clone() 克隆
getturtle() | getpen() 获取海龟画笔
getscreen() 获取屏幕
setundobuffer() 设置撤消缓冲区
undobufferentries() 撤消缓冲区条目数
1) 窗口控制
bgcolor() 背景颜色
bgpic() 背景图片
clearscreen()
resetscreen()
screensize() 屏幕大小
setworldcoordinates() 设置世界坐标系
2)动画控制
delay() 延迟
tracer() 追踪
update() 更新
使用屏幕事件
listen() 监听
onkey() | onkeyrelease() 当键盘按下并释放
onkeypress() 当键盘按下
onclick() | onscreenclick() 当点击屏幕
ontimer() 当达到定时
mainloop() | done() 主循环
3)设置与特殊方法
mode()
colormode() 颜色模式
getcanvas() 获取画布
getshapes() 获取形状
register_shape() | addshape() 添加形状
turtles() 所有海龟
window_height() 窗口高度
window_width() 窗口宽度
4)输入方法
textinput() 文本输入
numinput() 数字输入
Screen 专有方法
bye() 退出
exitonclick() 当点击时退出
setup() 设置
title() 标题
画布就是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)
1) 画笔的状态
在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。
2) 画笔的属性
画笔(画笔的属性,颜色、画线的宽度等)
1) turtle.pensize():设置画笔的宽度;
2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
3) 绘图命令
操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。
(2) 画笔控制命令
命令说明
函数名 | 函数意义 |
---|---|
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) | 绘制一个指定直径和颜色的圆点 |
(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() | 返回最后记录的多边形。 |
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) # 半圆
- import turtle as tur
- import colorsys as cs
- tur.speed(0)
- tur.width(1)
- tur.bgcolor('black')
- h = 0.0
- for j in range(4):
- for i in range(100):
- tur.color(cs.hsv_to_rgb(h,1,1))
- tur.circle(10+(i*1))
- h +=0.01
- tur.right(90)
- tur.hideturtle()
- tur.done()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
- from turtle import *
-
- import colorsys
- speed(0)
- bgcolor('black')
- tracer(5)
- width(2)
- h=0.001
- for i in range(90):
- color(colorsys.hsv_to_rgb(h,1,1))
- forward(100)
- left(60)
- forward(100)
- right(120)
- circle(50)
- left(240)
- forward(100)
- left(60)
- forward(100)
- h+=0.02
- color(colorsys.hsv_to_rgb(h,1,1))
- forward(100)
- right(60)
- forward(100)
- right(60)
- forward(100)
- left(120)
- circle(-50)
- right(240)
- forward(100)
- right(60)
- forward(100)
- left(2)
- h+=0.02
- done()
- import turtle as tur
- import colorsys as cs
-
- # tur.setsetup(800,800)
- tur.speed(0)
- tur.width(2)
- tur.bgcolor('black')
-
- for j in range(25):
- for i in range(15):
- tur.color(cs.hsv_to_rgb(1/25,j/25,1))
- tur.right(90)
- tur.circle(200-j*4,90)
- tur.left(90)
- tur.circle(200-j*4,90)
- tur.right(180)
- tur.circle(50,24)
- tur.hideturtle()
- tur.done()
- import turtle as tu
-
- roo = tu.Turtle() # Turtle object
- wn = tu.Screen() # Screen Object
- wn.bgcolor("black") # Screen Bg color
- wn.title("Fractal Tree Pattern")
- roo.left(90) # moving the turtle 90 degrees towards left
- roo.speed(20) # setting the speed of the turtle
-
-
- def draw(l): # recursive function taking length 'l' as argument
- if (l < 10):
- return
- else:
-
- roo.pensize(2) # Setting Pensize
- roo.pencolor("yellow") # Setting Pencolor as yellow
- roo.forward(l) # moving turtle forward by 'l'
- roo.left(30) # moving the turtle 30 degrees towards left
- draw(3 * l / 4) # drawing a fractal on the left of the turtle object 'roo' with 3/4th of its length
- roo.right(60) # moving the turtle 60 degrees towards right
- draw(3 * l / 4) # drawing a fractal on the right of the turtle object 'roo' with 3/4th of its length
- roo.left(30) # moving the turtle 30 degrees towards left
- roo.pensize(2)
- roo.backward(l) # returning the turtle back to its original psition
-
-
- draw(20) # drawing 20 times
-
- roo.right(90)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(2)
- roo.pencolor("magenta") # magenta
- roo.forward(l)
- roo.left(30)
- draw(3 * l / 4)
- roo.right(60)
- draw(3 * l / 4)
- roo.left(30)
- roo.pensize(2)
- roo.backward(l)
-
-
- draw(20)
-
- roo.left(270)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(2)
- roo.pencolor("red") # red
- roo.forward(l)
- roo.left(30)
- draw(3 * l / 4)
- roo.right(60)
- draw(3 * l / 4)
- roo.left(30)
- roo.pensize(2)
- roo.backward(l)
-
-
- draw(20)
-
- roo.right(90)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(2)
- roo.pencolor('#FFF8DC') # white
- roo.forward(l)
- roo.left(30)
- draw(3 * l / 4)
- roo.right(60)
- draw(3 * l / 4)
- roo.left(30)
- roo.pensize(2)
- roo.backward(l)
-
-
- draw(20)
-
-
- ########################################################
-
- def draw(l):
- if (l < 10):
- return
- else:
-
- roo.pensize(3)
- roo.pencolor("lightgreen") # lightgreen
- roo.forward(l)
- roo.left(30)
- draw(4 * l / 5)
- roo.right(60)
- draw(4 * l / 5)
- roo.left(30)
- roo.pensize(3)
- roo.backward(l)
-
-
- draw(40)
-
- roo.right(90)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(3)
- roo.pencolor("red") # red
- roo.forward(l)
- roo.left(30)
- draw(4 * l / 5)
- roo.right(60)
- draw(4 * l / 5)
- roo.left(30)
- roo.pensize(3)
- roo.backward(l)
-
-
- draw(40)
-
- roo.left(270)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(3)
- roo.pencolor("yellow") # yellow
- roo.forward(l)
- roo.left(30)
- draw(4 * l / 5)
- roo.right(60)
- draw(4 * l / 5)
- roo.left(30)
- roo.pensize(3)
- roo.backward(l)
-
-
- draw(40)
-
- roo.right(90)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(3)
- roo.pencolor('#FFF8DC') # white
- roo.forward(l)
- roo.left(30)
- draw(4 * l / 5)
- roo.right(60)
- draw(4 * l / 5)
- roo.left(30)
- roo.pensize(3)
- roo.backward(l)
-
-
- draw(40)
-
-
- ########################################################
- def draw(l):
- if (l < 10):
- return
- else:
-
- roo.pensize(2)
- roo.pencolor("cyan") # cyan
- roo.forward(l)
- roo.left(30)
- draw(6 * l / 7)
- roo.right(60)
- draw(6 * l / 7)
- roo.left(30)
- roo.pensize(2)
- roo.backward(l)
-
-
- draw(60)
-
- roo.right(90)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(2)
- roo.pencolor("yellow") # yellow
- roo.forward(l)
- roo.left(30)
- draw(6 * l / 7)
- roo.right(60)
- draw(6 * l / 7)
- roo.left(30)
- roo.pensize(2)
- roo.backward(l)
-
-
- draw(60)
-
- roo.left(270)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(2)
- roo.pencolor("magenta") # magenta
- roo.forward(l)
- roo.left(30)
- draw(6 * l / 7)
- roo.right(60)
- draw(6 * l / 7)
- roo.left(30)
- roo.pensize(2)
- roo.backward(l)
-
-
- draw(60)
-
- roo.right(90)
- roo.speed(2000)
-
-
- # recursion
- def draw(l):
- if (l < 10):
- return
- else:
- roo.pensize(2)
- roo.pencolor('#FFF8DC') # white
- roo.forward(l)
- roo.left(30)
- draw(6 * l / 7)
- roo.right(60)
- draw(6 * l / 7)
- roo.left(30)
- roo.pensize(2)
- roo.backward(l)
-
-
- draw(60)
- wn.exitonclick()
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。