赞
踩
目录
本文编写参考官方文档:https://docs.python.org/zh-cn/3/library/turtle.html
海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。
1.2 绘图原理:通过组合使用它提供的命令,让海龟在绘图区域行走,从而留下的轨迹形成精美的形状和图案。
Turtle库提供了面向对象接口下的主要的两个类给我们使用。
Screen() 函数返回一个 TurtleScreen 子类的单例对象。此函数应在 turtle 作为独立绘图工具时使用。作为一个单例对象,其所属的类是不可被继承的。
TurtleScreen/Screen 的所有方法还存在对应的函数,即作为面向过程的接口组成部分。
从 RawTurtle 派生出子类 Turtle (别名: Pen),该类对象在 Screen 实例上绘图,如果实例不存在则会自动创建。
RawTurtle/Turtle 的所有方法也存在对应的函数,即作为面向过程的接口组成部分。
过程式接口提供与 Screen 和 Turtle 类的方法相对应的函数。函数名与对应的方法名相同。当 Screen 类的方法对应函数被调用时会自动创建一个 Screen 对象。当 Turtle 类的方法对应函数被调用时会自动创建一个 (匿名的) Turtle 对象。
在使用过程中主要就是使用screen和Turtle类的方法进行绘图,其他不做深入
以下提供简单的案例:画个简单的等边三角形
#等边三角形:三边相等,内角和180度,灭个角60度, #思路:使用turtle库中的turtle.fd()向前和turtle.seth()设置角度 import turtle#导入turtle模块 turtle.fd(100)#向前100像素 turtle.seth(120)#设置角度120 turtle.fd(100)#向前100像素 turtle.seth(240)#设置角度240度 turtle.fd(100)#向前100像素 turtle.done()#使画的图停留在画布上 |
文中选取重要的方法进行举例,更多方法课查看中文手册:https://docs.python.org/zh-cn/3/library/turtle.html
2.1画布介绍
画布就是绘图区域,Turtle中提供了TurtleScreen类来对画布进行设置和操作,本文案例使用的是Turtle类的一个实例,命名未screen
2.2画布设置
turtle.
bgcolor
(*args)参数
args -- 一个颜色字符串或三个取值范围 0..colormode 内的数值或一个取值范围相同的数值3元组
设置或返回 TurtleScreen 的背景颜色。
例子:screen.bgcolor("black")#设置窗口的背景颜色为黑色
turtle.
bgpic
(picname=None)参数
picname -- 一个字符串, gif-文件名, "nopic", 或 None
设置背景图片或返回当前背景图片名称。如果 picname 为一个文件名,则将相应图片设为背景。如果 picname 为 "nopic",则删除当前背景图片。如果 picname 为 None,则返回当前背景图片文件名。:
screen.bgpic("bg.jpg")#设置背景图片
从中删除所有海龟的全部绘图。将已清空的 TurtleScreen 重置为初始状态: 白色背景,无背景片,无事件绑定并启用追踪。
注解
此 TurtleScreen 方法作为全局函数时只有一个名字 clearscreen。全局函数 clear 所对应的是 Turtle 方法 clear。
重置屏幕上的所有海龟为其初始状态。
注解
此 TurtleScreen 方法作为全局函数时只有一个名字 resetscreen。全局函数 reset 所对应的是 Turtle 方法 reset。
turtle.
screensize
(canvwidth=None, canvheight=None, bg=None)参数
如未指定任何参数,则返回当前的 (canvaswidth, canvasheight)。否则改变作为海龟绘图场所的画布大小。不改变绘图窗口。要观察画布的隐藏区域,可以使用滚动条。通过此方法可以令之前绘制于画布之外的图形变为可见。
screen.screensize(2000,1500)
3.1 画笔介绍
3.2画笔方法概览:
本节中的大部分示例都使用 Turtle 类的一个实例,命名为 turtle。
turtle.forward(distance)
turtle.fd(distance)¶
参数
distance -- 一个数值 (整型或浮点型)
turtle.fd(25)或者
turtle.forward(25)
turtle.back(distance)
turtle.bk(distance)
turtle.backward(distance)
参数
distance -- 一个数值
>>> turtle.position()
(0.00,0.00)
>>> turtle.backward(30)
turtle.right(angle)
turtle.rt(angle)
参数
angle -- 一个数值 (整型或浮点型)
海龟右转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。) 角度的正负由海龟模式确定,参见 mode()。
>>> turtle.heading()
22.0
>>> turtle.right(45)
turtle.left(angle)
turtle.lt(angle)
参数
angle -- 一个数值 (整型或浮点型)
海龟左转 angle 个单位。(单位默认为角度,但可通过 degrees() 和 radians() 函数改变设置。) 角度的正负由海龟模式确定,
>>> turtle.heading()
22.0
>>> turtle.left(45)
turtle.
goto
(x, y=None)
turtle.
setpos
(x, y=None)
turtle.
setposition
(x, y=None)¶
参数
如果 y 为 None,x 应为一个表示坐标的数值对或 Vec2D 类对象 (例如 pos() 返回的对象).
海龟移动到一个绝对坐标
turtle.setx(x)
参数
x -- 一个数值 (整型或浮点型)
设置海龟的横坐标为 x,纵坐标保持不变。
turtle.sety(y)
参数
y -- 一个数值 (整型或浮点型)
设置海龟的纵坐标为 y,横坐标保持不变。
更多请参考:https://docs.python.org/zh-cn/3/library/turtle.html#methods-of-turtlescreen-screen
-
- #画正方形
-
- #导入turtle模块
- import turtle,random
- t = turtle
- #设置画布背景颜色
- t.bgcolor('black')
-
- t.title("画正方形")
-
- t.pensize(5) #画笔大小为5
-
- t.pencolor("white") #画笔颜色为白
-
- t.fillcolor("white") #填充颜色为白
-
- t.begin_fill() #开始填充
-
- for i in range(4): #循环四次
-
- turtle.forward(100) #前进100
-
- turtle.left(90) #左转90度
-
- t.end_fill() #结束填充
-
-
-
- #签名
- t.up()
- t.goto(300,-120)
- t.color("red")
- t.pensize(100)
- t.down()
- t.write("@Candy")
- #隐藏画笔
- t.hideturtle()
- #让画面一直停留
- t.done()

|
-
- #画圆
-
- #导入turtle模块
- import turtle
-
- turtle.color('red')#笔红色
-
- turtle.circle(40)#画圆半径39
-
- turtle.done()#让画面一直停留
-
- #画多边形(画五角星)
-
- #导入turtle模块
- import turtle
-
- #循环画
-
- r = 100
-
- for i in range(6):
- turtle.forward(r)
- turtle.right(144)
-
- turtle.done()#让画面一直停留
|
5.1随机画星星
-
- #随机画星星、大小随机、
-
- #导入turtle模块
- import turtle,random
- t = turtle
- #设置背景颜色
- t.bgcolor('black')
- x = x+10
- y = random.randint(-100,200)
- r = random.randint(10,35)
-
- t.up()
-
- #设置颜色
-
- t.color(color)
-
- #画笔大小
-
- #turtle.pensize(5)
-
- #画笔移动到坐标为x,y的位置
-
- t.goto(x,y)
-
- t.down()
-
- for i in range(6):
-
- t.forward(r)
-
- t.right(144)
-

|
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。