python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python中turtle绘图模块

Python中turtle绘图模块的详细讲解

作者:软件开发技术爱好者

Turtle库是Python语言中一个很流行的绘制图像的函数库,下面这篇文章主要给大家介绍了关于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() 

总结

到此这篇关于Python中turtle绘图模块的文章就介绍到这了,更多相关Python中turtle绘图模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文