赞
踩
turtle库,又被称为海龟,是能够进行绘图操作的一个标准库,包含许多用来图形绘制的方法。
在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:标原点(位置),面朝x轴正方向(方向),turtle绘图中, 就是使用位置方向描述小乌龟(画笔)的状态。
使用Python中的turtle库不需要特别的准备。要使用turtle库,你需要确保你的Python环境已经安装,并知道如何导入和使用turtle库。
如python中的其他标准库和三方库一般,想要使用,需在程序开始处进行库的引用,引用方式主要有以下几种:
1、import turtle
:直接引入对应的库
备注:使用这种方式引入库,那么在对turtle库中的函数进行调用时,需要使用这种形式:turtle. 函数名()
例如:
# circle()是turtle库中的一个用来绘制圆的函数
import turtle
turtle. circle(100)
2、from turtle import *
:直接从turtle库中引入其所有的函数
备注:在对turtle库中的函数进行调用时,函数名前不用加turtle库名,即使用这种形式:函数名()
例如:
from turtle import *
circle(100) #直接调用
3、import turtle as t
:直接引入库,并给库取一个别名
例如:
import turtle as t
t. circle(100) #画一个圈
备注:这种方式与方式一很像,在需要多次调用turtle库的函数时,可使用别名简化代码
1、窗体函数:
1)设置窗口的函数:turtle. setup(width,height,starts,starty)
作用:设置绘图窗口的宽高和位置
其中:
width
:表示绘图窗口的宽度,值是整数,表示的是像素值;值是小数,表示窗口宽度与屏幕的比例。
height
:表示绘图窗口的高度,值是整数,表示的是像素值;值是小数,表示窗口高度与屏幕的比例。
startx
:表示绘图窗口左侧与屏幕左侧的像素距离。若不填,默认窗口位于屏幕水平居中。
starty
:表示绘图窗口顶部与屏幕顶部的像素距离。若不填,默认窗口位于屏幕垂直居中。
2)画布背景色设置:turtle. bgcolor("red")
3)画笔上箭头的隐藏与显示**:
turtle. hideturtle()
隐藏
turtle. showturtle()
显示
4)设置画笔的移动速度:turtle. speed(n)
设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
2、画笔状态的函数:有多种,具体见下述
1)提起及放下画笔的函数:这是两个函数,一般都配套使用。
完整形式:
turtle. penup() 提起画笔
turtle. pendown() 放下画笔
作用:提起画笔后,移动画笔或者绘图,均不会在画布上留下痕迹。放下画笔后,移动画笔或者绘图,均会在画布上留下痕迹。
2)画笔状态设置:
turtle. pensize(数字)
:画笔粗细
turtle.pencolor('颜色')
:画笔颜色
turtle.fillcolor('颜色')
:画笔填充颜色
也可以混合使用:turtle. pen(pensize,pencolor,fillcolor)
例如:
(1)turtle. pensize(30):设置画笔的粗细
(2)turtle. color(pencolor,fillcolor):设置画笔的颜色及填充颜色
(3)turtle. fillcolor("blue"):设置图案的填充颜色
3、画笔状态设置:图案颜色填充函数:
turtle. begin_fill()
:开始填充
turtle. end_fill()
:结束填充
具体使用场景如下:
#绘制的一个半径为100内部为蓝色的圆
import turtle as turtle
turtle. fillcolor("blue")
turtle. begin_fill()
turtle. circle(50)
turtle. end_fill()
结果:
4、画笔状态设置:画笔移动操作的函数:
1)直线运动操作的函数:
(1) turtle.forward(200)
作用:往前画长度为200像素的直线(画笔初始方向默认为水平向右)
(2) turtle.backward(300)
作用:往后画长度为300像素的直线(画笔方向保持不变)
2)改变画笔方向的函数:
(1) turtle.right(90)
作用:画笔沿顺时针方向旋转90度
(2) turtle.left(90)
作用:画笔沿逆时针方向旋转90度
(3) turtle.setheading(90)
作用:画笔沿逆时针方向旋转90度
备注:括号里面的参数可正可负,正如上述,负为反方向
3)改变画笔当前位置的函数:
(1) turtle.goto(x,y)
作用:将画笔从当前位置移动到(x,y)处,x、y为具体像素坐标值(以初始点为坐标原点)
(2) turtle.setpos(x,y)
作用:将画笔从当前位置移动到(x,y)处,x、y为具体像素坐标值(以初始点为坐标原点)
(3) turtle. setx(x)
作用:将画笔从当前位置水平移动到横坐标为x处,x为具体像素坐标值(纵坐标不变)
(4) turtle. set y(y)
作用:将画笔从当前位置竖直移动到纵坐标为y处,y为具体像素坐标值(横坐标不变)
5、画布的全局操作:
1)turtle. clear()
作用:清空turtle画布,但是turtle画笔的位置和状态不变
2)turtle. reset()
作用:清空并复位turtle画布窗口,重置画笔状态(但是画布背景色不变)
3)turtle. undo()
作用:撤销上一个turtle绘图动作
4)turtle. isvisible()
作用:返回当前turtle画布是否可见,若可见,返回True,否则返回False
代码:
#一般形式 import turtle as t #召唤海龟先生 t.pensize(5) #画笔粗细 #第一个圈 t.color("black") #把画笔颜色改为黑色 t.circle(50) #画圆 #第二个圆 t.color("red")#把画笔颜色改为黑色 t.penup()#抬笔 t.goto(-100,0)#移动到-100,0 t.pendown() #落笔 t.circle(50) #第三个圆 t.color("blue") t.penup() t.goto(100,0) t.pendown() t.circle(50) #第四个圆 t.color("green") t.penup() t.goto(-50,-50) t.pendown() t.circle(50) #第五个圆 t.color("yellow") t.penup() t.goto(50,-50) t.pendown() t.circle(50)
或者使用函数:定义drawCircle函数,使代码简约易理解
#函数形式
import turtle as t #召唤海龟先生
t.pensize(5)
def drawCircle(color,x,y):
t.color(color)
t.goto(x,y)
t.pendown()
t.circle(50)
t.penup()
drawCircle("black",0,0)
drawCircle("red",-100,0)
drawCircle("blue",100,0)
drawCircle("green",-50,-50)
drawCircle("yellow",50,-50)
开始填充 .begin_fill()
结束填充 end_fill()
向右转 .right(度数)
向左转 .left(度数)
直走 .forward(xxx)
import turtle as t t.forward(100) t.right(90) t.forward(100) t.right(90) t.forward(100) t.right(90) t.forward(100) t.right(90) t.penup() t.goto(-200,-100) def draw_rectangle(side): t.pendown() for i in range(4): t.forward(side) t.right(90) t.penup() draw_rectangle(50)
如图,画了两个正方形:
turtle.goto(x,y)
让画笔沿直线移动到坐标点(x,y)处
turtle.setpos(x,y)
与goto命令一样,作用也是让画笔沿直线移动到坐标点(x,y)处
turtle.sex(x)
只改变x坐标,让画笔产生移动
turtle.sex(y)
只改变y坐标,让画笔产生移动
x,y=turtle.pos()
返回画笔当前位置的坐标
turtle.seth(degree)
用于设置画笔的方向,参数degree为画笔方向与海龟坐标系x轴正向的夹角度数。
import turtle as t # 第一个三角形 原始的方式 t.color('dark green') t.begin_fill() #填充的起点 t.forward(100) t.left(120) t.forward(100) t.left(120) t.forward(100) t.end_fill() #填充的终点(闭合) # 第二个三角形 加入for循环 t.penup() t.setpos(-100,-100) t.pendown() t.color('red') t.begin_fill() for i in range(3): t.forward(100) t.left(120) t.end_fill() # 第三个三角形 利用函数+for循环 t.penup() t.setpos(200,-100) def draw_trangle(): #函数形式 t.pendown() t.color('black') t.begin_fill() for i in range(3): t.forward(100) t.left(120) t.end_fill() draw_trangle()
如图,画了三个三角形:
注意点:熟知内角和的度数。【多边形的内角及内角和 = (n-2)*180°】
import turtle as t # 第一个五角形 t.color('red') t.forward(100) t.left(72) t.forward(100) t.left(72) t.forward(100) t.left(72) t.forward(100) t.left(72) t.forward(100) # 第二个五角形 t.penup() t.setpos(-200,-200) t.pendown() t.color('green') t.begin_fill() for i in range(5): t.forward(100) t.left(72) t.end_fill() t.penup() t.setpos(200,-200) # 第三个五角形 def draw_pentagon(): t.pendown() t.color('green') t.begin_fill() for i in range(5): t.forward(100) t.left(72) t.end_fill() draw_pentagon() t.exitonclick() #点击画布时,画布才消失
如图,画了三个五边形:
五角星的角的度数 36°
import turtle as t
t.color('dark green')
t.begin_fill()
for i in range(5):
t.forward(100)
t.right(144)
t.end_fill()
如图:
另一种方式:
import turtle as t
t.color('dark green')
t.begin fill()
forin range(5):
t.forward(30)
t.left(72)
t.forward(30)
t.right (144)
t.end fill()
新建一个窗口:t.Screen()
让画笔沿直线移动到坐标点(x,y)处:.setpos(x.y)
设置背景颜色:Object.bgcolor(color)
设置窗口宽、高:Obiect.setup(width,height)
隐藏画笔箭头:setheading(degre)
''' 1.画五星红旗D底色为红色 矩形框宽和高比为3比2 2.确定几颗星星的位置 3.小星星旋转一个角度指向大星星 ''' import turtle as t window = t.Screen() window.setup(900,600) window.bgcolor('red') t.speed(0) map = t.Screen() map.setup(900,600) map.bgcolor('red') # t.screensize(800,600) # t.bgcolor('red') def draw_5pointedstar(x,y,degree,side): t.setpos(x,y) t.setheading(degree) t.pendown() t.color('yellow') t.begin_fill() for i in range(5): t.forward(side) t.left(72) t.forward(side) t.right(144) t.end_fill() t.penup() #大五星 t.penup () draw_5pointedstar(-390,180,0,65) #右上第1颗小五角星 draw_5pointedstar(-170,260,330,15) #右上第2颗小五角星 draw_5pointedstar(-120,170,30,15) #第3颗小五角星 draw_5pointedstar(-120,100,0,15) #第4颗小五角星 draw_5pointedstar(-170,60,330,15) t.hideturtle() t.exitonclick()
爱我中华!
import turtle as t
t.pensize(5)
t.pencolor("black")
for i in range(9): #一共有9条边,顾循环9次
t.forward(100)
t.left(80) #叠边形的内角为100,偏移角度为80
t.exitonclick()
如图:
#贝壳
import turtle as t
t.speed(15) #调整画笔的速度
for x in range(20):
t.circle(x*3)
t.exitonclick()
如图:
# 利用for循环
import turtle as t
t.speed(20)
for x in range(30):
t.circle(x*3)
t.left(90) #旋转90°
t.exitonclick()
#或者利用while循环
如图:
import turtle as t
t.speed(100)
X = 0
while X < 50 :
t.forward(X * 3)
t.left(90)
X+=1
t.exitonclick()
如图:
这里用到了随机函数random.randint()
,使用前需要导入 import random
import turtle as t import random #导入 screen = t.Screen() #创建新的窗口 screen.colormode(255) t.speed(20) t.pensize(2) for x in range(50): #利用随机函数随机获取rgb三种颜色 r = random.randint(0,255) g = random.randint(0,255) b = random.randint(0,255) t.color(r,g,b) t.circle(x) t.left(90) t.exitonclick()
如图:
import turtle as t
window = t.Screen()
window.bgcolor('black')
# sides = eval(input("输入要绘制的边的数目 (2-6) !"))
sides = 6
t.speed(20)
colors =["red","yellow","green","blue","orange","purple"]
for x in range(100):
t.pencolor(colors[x % sides])
t.forward(x * 3 / sides + x)
t.left(360 / sides + 1)
t.width(x* sides / 200)
t.exitonclick()
如图:
在pycharm/vscode中绘图完毕,画布总会消失。有三种方法能让turtle绘画结束后画布不消失,如下最后三个语句:`
turtle.exitonclick()
#点击画面时画布才会消失turtle.mainloop()
#这种方法会使得后面的代码无法运行turtle.done()
#这种方法会使得后面的代码无法运行Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。