Python 的turtle模块讲座

Python开发 专栏收录该内容
66 篇文章 0 订阅

Python 的turtle模块讲座

turtle库是Python语言中一个很流行的绘制图像的函数库,可以轻松地绘制出精美的形状和图案,很适合用来引导孩子学习编程。

turtle模块(module)是Python语言中的标准模块(内置模块)之一。

【在Python中,模块也称作库(Library)】

turtle基本概念

画布(canvas),turtle模块展开用于绘图的区域,可以设置其大小和初始位置。

turtle 中默认的模式为 standard ,其坐标原点在画布(canvas)中心,单位为象素(pixel)。turtle空间坐标体系分为位置坐标系和角度坐标系,画布默认大小(400, 300),对于位置坐标系而言,与数学中的直角坐标系相同,正中心的坐标就是(0,0),你可以想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。goto函数有两个参数X,Y,指的是让在任何位置的海龟去到达某一个坐标的位置。对于角度坐标系而言,以x轴正方向为0度,逆时针为角度正值,顺时针为角度负值,也与数学中的相同。

调出模块

import turtle

turtle定义窗体(窗口)的大小和位置的函数setup()

setup()函数改变窗体(窗口)的大小,确定画布空间的大小及在屏幕中的位置,格式:

turtle.setup (width,height,startx,starty)

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

参见下图:

单位为像素。

屏幕的的左上角为原点。

例、

import turtle

turtle.setup(800,500,0,0)

参见如下示意图:

又如:

turtle.setup(width=0.6, height=0.6)

turtle.setup(width=800, height=800, startx=100, starty=100)

turtle定义定义了画布的大小和背景色函数screensize()

screensize()函数改变画布的大小和背景色,格式:

turtle.screensize(canvwidth=None, canvheight=None, bg=None)

参数分别为画布的宽(单位像素), 高, 背景颜色

如:

import turtle

turtle.screensize(480, 360,"green")

窗体和画布不是一个概念。如果画布大于窗体,窗体会出现滚动条,如果画布小于窗体,画布会填充整个窗体。想要改变窗体(窗口)的大小,不是用screensize函数,要用setup函数。

窗体大于画布,画布填充了窗体。测试代码:

import turtle

turtle.setup(300,200)

turtle.screensize(200,100,"blue")

turtle.shape("turtle") #出现小乌龟

运行之,参见下图:

画布大于窗体,窗体出现滚动条。测试代码:

import turtle

turtle.setup(300,200)

turtle.screensize(500,400,"blue")

turtle.shape("turtle") #出现小乌龟

运行之,参见下图:

引用turtle模块(库)方法

方法1

import turtle

turtle.circle(10) #使用turtle

方法2

from turtle import *

circle(10) #使用turtle

方法3

import turtle as t

t.circle(10) #使用turtle

turtle库包含近百个功能函数。在此我们介绍一些常用的函数:

绘制状态函数:pendown()、penup()、pensize()

函数名

别名

参数说明

功能/作用

pendown()

pd() 或down()

落下画笔,之后移动画笔绘制。

penup()

pu()或up()

抬起画笔,之后移动画笔不绘制。

pensize(width)

width(width)

width:设置的画笔线条宽度,如果为None或者为空,则返回当前画笔宽度

设置画笔宽度,当无参数输入时返回当前画笔宽度。

颜色控制函数:color()、pencolor()、begin_fill()、end_fill();

函数名

别名

参数说明

功能/作用

color(colorstring)

color((r,g,b))

color(r,g,b)

或 color(colorstr1,colorstr2)或 color((r1,g1,b1),(r2,g2,b2))

当画笔和填充颜色相同时使用1个参数;

当画笔和填充颜色不同时使用2个参数。

colorstring:表示颜色的字符串,例如:“Purple","red","blue"等。还支持十六进制颜色值,如:"#6666CC"等

(r,g,b):颜色对应RGB的值,如绿色用rgb(0, 128, 0)。【注】

返回设置画笔或填充颜色,当无参数输入时返回当前画笔及填充颜色。

pencolor(colorstring)

pencolor((r,g,b))

pencolor(r,g,b)

colorstring:表示颜色的字符串,例如:“Purple","red","blue"等。还支持十六进制颜色值,如:"#6666CC"等

(r,g,b):颜色对应的RGB的值,如绿色用rgb(0, 128, 0)。【注】

返回或设置画笔颜色,当无参数输入时返回当前画笔颜色。

begin_fill()

在绘制带有填充色彩图形之前调用,表示填充开始。

,end_fill()

在绘制带有填充色彩图形之后调用,表示填充结束。

fillcolor(colorstring)

fillcolor((r,g,b))

fillcolor(r,g,b)

colorstring:表示颜色的字符串,例如:“Purple","red","blue"等。还支持十六进制颜色值,如:"#6666CC"等

(r,g,b):颜色对应的RGB的值,如绿色用rgb(0, 128, 0)。【注】
填充色彩

【注】

turtle模块(库)中用字符串表示颜色,如

"red"表示红色

"black"表示黑色

"blue"表示蓝色

"orange"表示橘黄色

"green"表示绿色

"gold"表示金色

"yellow"表示红色

"pink"表示粉色

还支持十六进制颜色值,如:"#6666CC"、"#FF0000"、"#CCFFFF"等。

turtle模块(库)中用RGB三原色表示颜色

关于RGB三原色表示颜色简介

当R值取满为255,G与B都取0时表示红色,当G值取满为255,R与B都取0时表示绿色,当B值取满为255,R与G都取0时表示蓝色,其他情况所得颜色即为红(R)、绿(G)、蓝(B)三个颜色通道的叠加颜色。常见叠加颜色如下表

颜色名称

红色值 Red

绿色值 Green

蓝色值 Blue

黑色

0

0

0

蓝色

0

0

255

绿色

0

255

0

青色

0

255

255

红色

255

0

0

洋红色(亮紫色)

255

0

255

黄色

255

255

0

白色

255

255

255

用R、G、B对应的三元组来表示颜色。例如:(255,0,0)表示红色,(0,255,0)表示绿色。

运动控制函数:forward()、backward()、right()、left()、setheading()、goto()、circle()

函数名

别名

参数说明

功能/作用

forward(distance)

fd(distance)

distance:行进距离的像素值。当值为负数时,表示向相反方向前进。

向画笔当前行进方向前进distance距离。

backward(distance)

back(distance)

bk(distance)

distance:行进距离的像素值。当值为负值时,表示向前进方向行进。backward()函数不改变画笔的运动方向,相当于后退着行进。

向当前画笔前进方向的反方向行进distance距离。

right(angle)

rt(angle)

angle:角度整数值。

以当前行进角度为原点,行进方向向右改变相对角度值angle

left(angle)

lt(angle)

angle:角度的整数值。

以当前行进角度为原点,行进方向向左改变相对角度值angle。

setheading(to_angle)

seth(to_angle)

to_angle:角度的整数值。

作用:设置画笔当前行进方向的角度为to_angle,该角度为绝对方向角度值。

goto(x,y)

x,y:x为标系的绝对横坐标值,y为置为坐标系的绝对纵坐标值。

将画笔移动到绝对位置(x,y)处。

circle(radius[,extent=None])

[还有一个参数,在此未讲]

radius:弧形半径,当值为正数时,半径在画笔左侧。当值为负数时,半径在画笔右侧。

extent:绘制弧形角度。当不给该参数或该参数为None时,绘制整个圆形。当extent的值为正数时,顺当前方向绘制弧形;当extent的值为负数时,逆当前方向绘制弧形。

根据半径radius绘制extent角度的弧形。

【angle即角度,也可以为负数。distance即距离,也可以为负数】

除此之外,再简要介绍一些函数如下

画笔控制函数

函数名

说明

turtle.shape(name)

name指定乌龟状:“arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”。默认"classic"

如turtle.shape('turtle')

turtle.hideturtle()

隐藏画笔的turtle形状

turtle.showturtle()

显示画笔的turtle形状

全局控制函数

函数名

说明

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参数也是可选项。字体名称:"Arial"、"宋体"、"楷体"等

例、写字函数write()的使用

import turtle

turtle.penup() #抬起画笔

turtle.goto(-200,100) #移动位置

turtle.write("好好学习,天天向上",font=("楷体",36))

其它函数

函数名

说明

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()

返回最后记录的多边形。

使用Python的turtle(海龟)模块画图步骤

第一步:让Python引入turtle模块,引入模块就是告诉Python你想要用它。

import turtle

第二步:创建画布,若使用默认可跳过此步。

第三步:理顺思路,选取函数绘图实现意图,这是最重要的一步,可能需要多次试验。

下面给出几个例子

例1、绘制梯形

此梯形绘制在第四象限,所以梯形形每个顶点的坐标中,x坐标为正,y坐标为负。四个点的坐标分别选择为D(100,-100)、E(200,-100)、F(250,-200)、G(50,-200)。可见所绘制的直角三角形DE=100,GF=200。由于D点的y坐标与E点的y坐标相等,所以,DE平行于x轴,由于G点的y坐标与F点的y坐标相等,所以,GF也平行于x轴。代码为:

import turtle

turtle.up()

turtle.fillcolor('yellow')

turtle.begin_fill()

turtle.goto(100,-100)

turtle.down()

turtle.goto(200,-100)

turtle.goto(250,-200)

turtle.goto(50,-200)

turtle.goto(100,-100)

turtle.end_fill()

思考一下,如何将梯形绘制在正中间?

例2、使用circle()函数的例子

import turtle

turtle.pencolor("red")

turtle.circle(50) #整圆

turtle.pencolor("blue")

turtle.circle(120, 180) #半圆

turtle.pencolor("green")

turtle.circle(80,steps=3) #三角形

例3、画五角星

import turtle 
  
turtle.pensize(5) 
turtle.pencolor("yellow") 
turtle.fillcolor("red") 
  
turtle.begin_fill() 
for i in range(5):
    turtle.forward(200)
    turtle.right(144)
turtle.end_fill() 
   
turtle.hideturtle() 
 

  • 1
    点赞
  • 0
    评论
  • 9
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值