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

目录
  • 前言
  • turtle基本概念
  • 调出模块
  • 引用turtle模块(库)方法
  • 例、写字函数write()的使用
  • 使用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绘图模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python绘图操作之turtle库乌龟绘图全面整理

    目录 官方文档网址 绘图窗口 空间坐标体系 绝对坐标 海龟坐标 角度坐标体系 绝对角度 海龟角度 RGB色彩体系 画笔控制函数 运动控制函数 方向控制函数 全局控制命令 示例 蟒蛇绘制 七段数码管日期显示 太阳花 库函数表格整理 画笔运动命令 画笔控制命令 全局控制命令 其他命令 [函数表格整理在最下方] 官方文档网址 turtle 绘图窗口 turtle.setup(width, height, startx, starty) 参数:width, height: 输入宽和高为整数时, 表示像素

  • python绘图模块之利用turtle画图

    模块之turtle 小故事 前两天朋友说:"常文啊!听说你会python,那能不能用python画一些好看的图呢?"然后我特意去学了一下turtle模块,现在给大家分享一下. 一.什么是turtle Turtle是python内嵌的绘制线.圆以及其他形状(包括文本)的图形模块. 二.turtle函数的使用 import turtle turtle.pendown() # 放下画笔 turtle.penup() # 抬起画笔 turtle.pensize(int) # 设置画笔宽度,值为

  • python turtle绘图命令及案例

    目录 一.绘图命令 1.画笔运动命令 2.画笔控制命令 3.全局控制命令 二.案例 1.案例一 2.案例二 3.案例三 4.案例四 5.案例五 一.绘图命令 操纵海龟绘图有很多命令,可以划分为三种:画笔运动命令.画笔控制命令.全局控制命令 1.画笔运动命令 命令 说明 turtle.forward(distance) 向当前画笔方向移动distance像素长度 turtle.backward(distance) 向当前画笔相反方向移动distance像素长度 turtle.right(degre

  • Python内置模块turtle绘图详解

    urtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形. turtle绘图的基础知识: 1.画布(canvas) 画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置. 设置画布大小 turtle.screensize(canvwidth=None,canvheight=None,bg=None),参数分别为画布的

  • python 简单的绘图工具turtle使用详解

    目录 1. 画布(canvas)   1.1 设置画布大小 2. 画笔   2.1 画笔的状态   2.2 画笔的属性   2.3 绘图命令 3. 命令详解 4. 绘图举例   4.1 太阳花   4.2 绘制小蟒蛇   4.3 绘制五角星 python2.6版本中后引入的一个简单的绘图工具,叫做海龟绘图(Turtle Graphics),turtle库是python的内部库,使用导入即可 import turtle type(turtle) >>> type(turtle) <c

  • Python绘图之turtle库的基础语法使用

    前言 Python语言的turtle库是一个直观有趣的图形绘制函数库,是python语言标准库之一. turtle库也叫海龟库,是turtle绘图体系的Python实现.turtle库是Python语言的标准库之一,是入门级的图形绘制函数库. turtle绘图体系:也叫海龟绘图系统,它是在1969年诞生,主要用于程序设计入门的一种绘图方式. Python计算生态 = 标准库 + 第三方库 标准库:随解释器直接安装到操作系统中的功能模块. 第三方库:需要经过安装才能使用的功能模块. turtle官

  • 详解Python绘图Turtle库

    Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形. turtle绘图的基础知识: 1. 画布(canvas) 画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置. 设置画布大小 turtle.screensize(canvwidth=None, canvheight=None, bg=None),参数分别

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

    目录 前言 turtle基本概念 调出模块 引用turtle模块(库)方法 例.写字函数write()的使用 使用Python的turtle(海龟)模块画图步骤 总结 前言 turtle库是Python语言中一个很流行的绘制图像的函数库,可以轻松地绘制出精美的形状和图案,很适合用来引导孩子学习编程. turtle模块(module)是Python语言中的标准模块(内置模块)之一. [在Python中,模块也称作库(Library)] turtle基本概念 画布(canvas),turtle模块展

  • Python中关于面向对象概念的详细讲解

    面向对象编程的2个非常重要的概念: 类和对象 对象是面向对象编程的核心,在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出了另外一个新的概念--类. 类用来描述具有相同的属性和方法的对象的集合.它定义了该集合中每个对象所共有的属性和方法.对象是类的实例. 类是由三部分构成: 类的名称 类的属性 类的方法 格式如下: # 类名 class Func(object): # 类的属性 i=123 # 类的方法 def f(self): print('6666') # 实例化类 a=F

  • Python中如何添加自定义模块

    一般来说,我们会将自己写的Python模块与python自带的模块分开存放以达到便于维护的目的.那么如何在Python中添加自定义的模块呢? 在解答这个问题之前,我们首先要明确两点: 1.严格区分包(package)和文件夹.包的定义就是包含__init__.py的文件夹.如果没有__init__.py,那么就是普通的文件夹. 2.模块导入写法,注意只要包路径,不要文件夹路径. Python 运行环境在查找库文件时是对 sys.path 列表进行遍历,如果我们想在运行环境中注册新的类库,主要有以

  • 对python中的logger模块全面讲解

    logging模块介绍 Python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便开发者开发第三方模块或者是自己的Python应用.同样这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP.GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志记录方式.下文我将主要介绍如何使用文件方式记录log. logging模块包括logger,handler,filter,formatter这四个基本概念. logging模块与log4

  • Python中的Cookie模块如何使用

    Cookie 模块,顾名思义,就是用来操作Cookie的模块. Cookie这块小蛋糕,玩过Web的人都知道,它是Server与Client保持会话时用到的信息 切片. Http协议本身是无状态的,也就是说,同一个客户端发送的两次请求,对于Web服务器来说,没有直接的关系.既然这样,有人会问,既然Http是无状态 的, 为什么有些网页,只有输入了用户名与密码通过验证之后才可以访问? 那是因为:对于通过身份验证的用户,Server会偷偷的在发往Client的数据中添 加 Cookie,Cookie

  • Python关于时间序列calendar模块的深入讲解

    大家好,在之前的文章中详细介绍了time和datetime模块的使用.这两个模块更多的是用于处理时间和日期相关的问题. 本文介绍的是第三个模块calendar,则主要是用于解决日历方面的问题. 中文官网地址:https://docs.python.org/zh-cn/3/library/calendar.html calendar模块 该模块定义了很多类型,主要包括:Calendar.TextCalendar.HTMLCalendar,其中 Calendar 是 TextCalendar 和 H

  • Python反向传播实现线性回归步骤详细讲解

    目录 1. 导入包 2. 生成数据 3. 训练数据 4. 绘制图像 5. 代码 1. 导入包 我们这次的任务是随机生成一些离散的点,然后用直线(y = w *x + b )去拟合 首先看一下我们需要导入的包有 torch 包为我们生成张量,可以使用反向传播 matplotlib.pyplot 包帮助我们绘制曲线,实现可视化 2. 生成数据 这里我们通过rand随机生成数据,因为生成的数据在0~1之间,这里我们扩大10倍. 我们设置的batch_size,也就是数据的个数为20个,所以这里会产生维

  • Python中使用select模块实现非阻塞的IO

    Socket的英文原义是"孔"或"插座".作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其英文原意那样,像一个多孔插座.一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110

  • Python中turtle作图示例

    在Python里,海龟不仅可以画简单的黑线,还可以用它画更复杂的几何图形,用不同的颜色,甚至还可以给形状填色. 一.从基本的正方形开始 引入turtle模块并创建Pen对象: >>> import turtle >>> t = turtle.Pen() 前面我们用来创建正方形的代码如下: >>> t.forward(50) >>> t.left(90) >>> t.forward(50) >>> t

随机推荐