pythonturtle(海龟)模块使用详情

引言:turtle(海龟)模块,我们是用它来进行画图的,基本上就是画简单的直线,点,和曲线。

你可以把它想成一个小海龟,在沙滩上行走,然后留下的各种痕迹,使用Turtle模块可以绘制很多精美的图形。

1. 画布(canvas)

import turtle
t=turtle.Pen() 创建一个画布
t.forward(50) t.forward(distance)  向当前画笔方向移动distance像素长度     =  t.fd(distance)
t.left(90)  turtle.left(degree)  逆时针旋转degree度
            只有left没有forword,那么只有个向上的箭头,没有横线
            两个加在一起才有横线有箭头
t.goto(150,50)  turtle.goto(x,y)  将画笔移动到坐标为x,y的位置
t.speed(2)  画笔绘制的速度范围[0,10]整数
t.goto(100,-50)
t.circle(50, 180) 绘制一个圆形,其中radius为半径,extent为度数,例如若extent为180,则画一个半圆;如要画一个圆形,可不必写第二个参数
t.setx(25) 将画笔当前x轴移动到指定位置,y轴坐标不变
t.sety(-75)  将画笔当前y轴移动到指定位置,x轴坐标不变
t.home()  设置当前画笔位置为原点,朝向东。
t.dot(50,red)  绘制一个指定直径和颜色的圆点
t.setheading(135)
setheading( to_angle)/turtle.seth(d)    设置小海
 龟当前行进方向角度为to_angle,该角度是实际的角度值。
 to_angle :角度的整数值。

画布就是我们画图的空白空间,可以修改大小和初始设置

如果我们用下面的Pen(画笔)函数,他会自动创建一个画布

t = turtle.Pen()

程序运行生成一个画图窗口

import turtle
t = turtle.Pen()

这是我们可以看到画布创建了,而在画布的中心会存在一个箭头,就是初始位置,也是我们的小海龟

绘图窗口的原点(0,0)在正中间。默认情况下,海龟向正右方移动

那么如果我们要修改画布大小呢?

python为我们提供了函数

turtle.screensize(canvwidth=None, canvheight=None, bg=None)canvwidth:画布的宽度(单位:像素)canvheight:画布的高度(单位:像素).bg:背景颜色若不设置值,默认参数为(400,300,None) 用Pen创建的就是默认大小

import turtle
turtle.screensize(canvwidth=None, canvheight=None, bg=None) 执行也会生成窗口

假如你不想设置长宽,只想按照屏幕大小来设定,别着急python还有一个函数

turtle.setup(width=0.5, height=0.75, startx=None, starty=None)width,height:输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例(startx,starty):这一坐标表示矩形窗口左上角顶点的位置。如果为空,则窗口位于屏幕中心

执行还是会生成画布

由下可知,执行程序,生成一个以笔记本屏幕的左上角为原点,向右为x轴正方向,向下为y轴正方向的平面直角坐标系。参数宽高可以指定画布的宽高,从x,指的是x坐标,也就是画布左上角那一点的x轴坐标,即坐标与Y轴的距离。y同理。

2.运动

在设置好画布之后,就要画图案了,那么请注意,turtle模块的画图,都是以箭头(小海龟)为基础的,

在我们要画图的时候,运动操作都是在当前箭头位置基础上经行修改

操纵海龟绘图有着许多的命令,这些命令可以划分为两种:一种为运动命令,一种为画笔控制命令

下面为运动命令:

t.forward(distance) 向当前画笔方向移动distance像素长度 = t.fd(distance)

执行程序,打开画布,从左至右快速生成箭头

turtle.left(degree) 逆时针旋转degree度

turtle.goto(x,y) 将画笔移动到坐标为x,y的位置。由图可知,它是以画笔起始点为原点,向右为x轴正方向,向上为y轴正方向构成平面直角坐标系。画笔先是向当前方向走了50像素,(好像当前方向默认是从画布中点开始,向右为起始方向),然后left向左转90度,当转90度时,只是能看到箭头指向上了,当它再次goto时,是让画笔走向goto的坐标点,画笔当前坐标和goto坐标的连线就是画笔的行走路线。goto的坐标就是按照刚才说的那个坐标系。

现在让goto去的坐标如下(150,50),当它远离x轴时开始,这里能形成一个直角三角形,宽50(距离x轴距离),高100(距离y轴距离-50)。当画笔停止时,画笔的方向还是朝上的,没有改变方向

给加了个速度,但是没看出速度的变化是什么样子,反正是都很快

画圆的时候,角度变了180度,这是画圆时设置的角度大小

setx,移动画笔x轴坐标,不改变y轴坐标

将画笔当前y轴移动到指定位置,x轴坐标不变

设置当前画笔位置为原点,朝向东。

绘制一个指定直径和颜色的圆点

这个角度是逆时针旋转135度,应该只是从当前角度开始旋转吧,这里的东方向应该是0度和360度

注意移动的时候是会有痕迹的

就介绍这些,下面我们给出运动命令操作表⬇

而如果要移动画笔而不留痕迹,比如在其他位置进行绘画,可以用

t.up() 画笔抬起,移动时不绘制图形可以看到这时候后退是没有痕迹的

这就涉及到了画笔控制命令

down() 画笔落下,移动时绘制图形

up() 画笔抬起,移动时不绘制图形

reset() 恢复所有设置

pensize(width) 画笔的宽度

pencolor(colorstring) 画笔的颜色

fillcolor(colorstring) 绘制图形的填充颜色

turtle.filling() 返回当前是否在填充状态turtle.begin_fill() 准备开始填充图形turtle.end_fill() 填充完成turtle.hideturtle() 隐藏画笔的turtle形状turtle.showturtle() 显示画笔的turtle形状

海龟向右(right)转,或者让它后退(backward)。我们可以用向上(up)来把笔从纸上抬起来(换句话说就是让海龟停止作画),用向下(down)来开始作画。

这样可以很简单的画出一个平行线

最后还有几个控制画布的命令

turtle.clear() 清空turtle窗口,但是turtle的位置和状态不会改变

turtle.reset() 清空窗口,重置turtle状态为起始状态

turtle.undo() 撤销上一个turtle动作

stamp() 绘制(复制)当前图形

注意clear和reset的区别,clear(画笔)海龟还是在原位置不变,只清除屏幕,reset则是全部重置

扩展知识:

我们可以创建多个画笔,来分别进行不同操作

实列演示:

绘制五角星

import turtle 导入画图模块
import time 导入时间模块

t = turtle.Turtle()
turtle.screensize(1000,1000) 定义画布大小
t.pensize(10)  定义画笔的宽度
t.pencolor("yellow")  定义画笔颜色
t.fillcolor("red")  定义填充颜色

t.begin_fill()  开始填充图像

for i in range(5):  五角星循环五次
t.forward(500)
t.right(144)  右转144°
t.end_fill()  停止填充
time.sleep(2)  阻塞两秒

t.penup()  提起笔,移动时不绘制图形
t.goto(-150, 120)  将画笔移动到某坐标点
t.color("violet")
t.write("Z小旋", font=(Arial, 40, normal))  设置文字和字体
绘制心形
import turtle

t = turtle.Turtle()
def curvemove():
for i in range(200):
t.right(1)
t.forward(1)
t.speed(5)设置画笔速度
t.color(red,pink)
t.begin_fill() 开始填充
t.left(140)
t.forward(111.65)
curvemove()
t.left(120)
curvemove()
t.forward(111.65)
t.end_fill() 结束填充
t.up() 抬起画笔
t.goto(-250, 100)  将画笔移动到某坐标点
t.color("violet")
t.write("Z小旋", font=(Arial, 40, normal))  设置文字和字体

参考链接:https://blog.csdn.net/as480133937/article/details/88592426

https://www.cnblogs.com/chen0307/articles/9645138.html

event_note 10月 17, 2022

account_box 回国加速器

发表回复