Python中turtle模块,python绘图库turtle

Python中turtle模块,python绘图库turtle,Python内置模块turtle绘图详解

本文主要介绍Python内置模块乌龟绘图的详细讲解,有一定的参考价值,有需要的朋友可以参考一下。

Urtle库是一个流行的用Python语言绘制图像的函数库。想象一只小乌龟,从一个横轴为X,纵轴为Y的坐标系的原点出发,在(0,0)的位置。它在一组函数指令的控制下在这个平面坐标系中移动,从而在其爬行路径上绘制图形。

画乌龟的基础知识:

1.画布(canvas)

是画布龟为我们扩展了绘图区域,我们可以设置它的大小和初始位置。

设置画布大小

turtle . screensize(canv width=none,Canvheight=none,BG=none),参数分别为画布的宽度(单位像素)、高度和背景色。

例如,海龟。屏幕尺寸(800,600,“绿色”)

Turtle.screensize()#返回默认大小(400,300)

Turtle.setup (width=0.5,height=0.75,startx=none,starty=none),参数:width,height:输入宽度和高度为整数时,表示像素;当它是十进制数时,表示电脑屏幕的比例。(startx,starty):这个坐标表示矩形窗口左上角顶点的位置。如果它是空的,窗口位于屏幕的中央。

例如turtle.setup(宽度=0.6,高度=0.6)

turtle.setup(宽度=800,高度=800,startx=100,starty=100)

2.画笔

2.1电刷状态

画布上有一个坐标轴,它的原点默认是画布的中心,原点上有一只面向X轴正方向的乌龟。在这里,我们用两个词来描述乌龟:坐标原点(位置),朝向X轴的正方向(方向)。在龟画中,用位置方向来描述龟(画笔)的状态。

2.2刷子的特性

画笔(画笔的属性、颜色、所画线条的宽度等。)

1)turtle . penzize():设置画笔的宽度;

2)turtle.pencolor():不传入参数,返回当前画笔颜色。传入的参数设置画笔颜色,可以是字符串,如“绿色”、“红色”或RGB3-tuple。

3)turtle.speed(速度):设置画笔的移动速度。笔刷绘制的速度范围是[0,10]整数,数字越大越快。

2.3绘图命令

操纵乌龟画图的命令有很多,分为三种:一种是移动命令,一种是笔刷控制命令,一种是全局控制命令。

(1)笔刷移动命令

命令

解释

龟.前进(距离)

在当前画笔方向上移动距离像素长度。

向后(距离)

向当前笔刷的相反方向移动距离像素长度。

turtle.right(度)

顺时针移动1度

turtle.left(度)

逆时针移动度

turtle.pendown()

移动时画图形,默认也画。

turtle.goto(x,y)

将画笔移动到x,y坐标的位置。

turtle.penup()

提起笔来移动,不画图形,用它从另一个地方画。

turtle.circle()

画一个半径为正(负)的圆,表示圆心在画笔的左(右)侧。

setx()

将当前X轴移动到指定位置。

塞提( )

将当前Y轴移动到指定位置。

设定航向(角度)

将当前方向设置为角度角度。

主页()

将当前笔刷位置设置为原点,面朝东。

点号

用指定的直径和颜色画一个点。

(2)刷控制命令

命令

解释

turtle.fillcolor(colorstring)

绘制图形的填充颜色。

turtle.color(颜色1,颜色2)

同时设置pencolor=color1和fillcolor=color2。

turtle.filling()

返回它当前是否正在被填充。

turtle.begin_fill()

准备开始填充图形

turtle.end_fill()

完全填充

turtle.hideturtle()

隐藏画笔的乌龟形状

turtle.showturtle()

展示画笔的乌龟形状

(3)全局控制命令

命令

解释

turtle.clear()

清除海龟窗口,但是海龟的位置和状态不会改变。

turtle.reset()

清空窗口,将海龟状态重置为初始状态。

turtle.undo()

撤销最后一个海龟动作。

turtle.isvisible()

返回当前海龟是否可见。

图章()

复制当前图形。

turtle.write(s [,font=('font-name ',font_size,' font_type')])

写文本,s是文本内容,font是字体参数,分别是字体名称、字号和类型;Font是可选的,font参数也是可选的。

(4)其他订单

命令

解释

Turtle.mainloop()或turtle.done()

启动事件循环——调用Tkinter的mainloop函数。

必须是乌龟图形程序中的最后一条语句。

turtle . mode(mode=无)

设置海龟模式(“标准”、“标志”或“世界”),并执行重置。如果没有给定模式,则返回当前模式。

模型

最初的海龟头衔

正角

标准

向右(东)

逆时针方向

标志;徽标

向上(北)

顺时针方向的

turtle . delay(delay=无)

或者以毫秒为单位设置绘制延迟。

turtle.begin_poly()

开始记录多边形的顶点。当前海龟的位置是多边形的第一个顶点。

turtle.end_poly()

停止多边形的顶点。当前海龟位置是多边形的最后一个顶点。与第一个顶点连接。

turtle.get_poly()

返回最后记录的多边形。

3.命令详解

3.1圆弧(半径,范围=无,步数=无)

描述:用给定的半径画一个圆

参数:

半径(Radius):半径为正(负),表示圆心在画笔的左(右)侧画圆;

Ext(弧度)(可选);

Steps(可选)(制作半径为的圆的内接正多边形,多边形的边数为steps)。

示例:

圆(50)#整圆;

Circle(50,steps=3)#三角形;

圆形(120,180)#半圆

4.实例

1.向日葵

#编码=utf-8

进口甲鱼

导入时间

#同时设置pencolor=color1和fillcolor=color2。

turtle.color('红色','黄色')

turtle.begin_fill()

对于_在范围内(50):

龟.前进(200)

左转弯(170度)

turtle.end_fill()

turtle.mainloop()

2.五角星形

#编码=utf-8

进口甲鱼

导入时间

乌龟冥想(5)

turtle.pencolor('黄色')

turtle.fillcolor('红色')

turtle.begin_fill()

for _ in范围(5):

龟.前进(200)

龟权(下)144

turtle.end_fill()

时间.睡眠(2)

turtle.penup()

turtle.goto(-150,-120)

turtle.color('紫罗兰')

turtle.write('Done ',font=('Arial ',40,' normal '))

turtle.mainloop()

3、时钟程序

#编码=utf-8

进口甲鱼

从日期时间导入*

# 抬起画笔,向前运动一段距离放下

定义跳过(步骤):

turtle.penup()

龟。向前(一步)

turtle.pendown()

def mkHand(名称,长度):

# 注册龟形状,建立表针龟

turtle.reset()

跳过(-长度* 0.1)

# 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

turtle.begin_poly()

turtle.forward长度* 1.1)

# 停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

turtle.end_poly()

# 返回最后记录的多边形。

handForm=turtle.get_poly()

turtle.register_shape(名称,手形)

定义初始化():

全球秒针,米汉德,胡汉德,打印机

# 重置龟指向北

turtle.mode('徽标)

# 建立三个表针龟并初始化

mkHand('secHand ',135)

mkHand('minHand ',125)

mkHand('hurHand ',90)

秒针=海龟。乌龟()

secHand.shape('secHand ')

minHand=海龟。乌龟()

minHand.shape('minHand ')

hurHand=海龟。乌龟()

hurHand.shape('hurHand ')

手牵手,手牵手,手牵手:

hand.shapesize(1,1,3)

手速(0)

# 建立输出文字龟

打印机=乌龟。乌龟()

# 隐藏画笔的龟形状

printer.hideturtle()

printer.penup()

定义设置时钟(半径):

# 建立表的外框

turtle.reset()

乌龟冥想(7)

对于范围内的我(60岁):

跳过(半径)

如果i % 5==0:

龟。前进(20)

跳过(-半径- 20)

跳过(半径20)

如果i==0:

turtle.write(int(12),align='center ',font=('Courier ',14,' bold '))

elif i==30:

跳过(25)

turtle.write(int(i/5),align='center ',font=('Courier ',14,' bold '))

跳过(-25)

elif (i==25或i==35):

跳过(20)

turtle.write(int(i/5),align='center ',font=('Courier ',14,' bold '))

跳过(-20)

否则:

turtle.write(int(i/5),align='center ',font=('Courier ',14,' bold '))

跳过(-半径- 20)

否则:

turtle.dot(5)

跳过(-半径)

turtle.right(6)

定义周(t):

week=['星期一', '星期二', '星期三,

'星期四', '星期五', '星期六', '星期日]

返回周[t . week()]

定义日期(t):

y=t年

m=t月

d=t日

返回%s %d%d' % (y,m,d)

定义刻度():

# 绘制表针的动态显示

t=datetime.today()

秒=t。秒t。微秒* 0.000001

分钟=分钟秒/60.0

小时=t。小时分钟/60.0

secHand.setheading(6 *秒)

minHand.setheading(6 *分钟)

hurHand.setheading(30 *小时)

turtle.tracer假)

printer.forward(65)

printer.write(Week(t),align='center ',

font=('Courier ',14,' bold '))

printer.back(130)

printer.write(Date(t),align='center ',

font=('Courier ',14,' bold '))

printer.home()

turtle.tracer(True)

# 100毫秒后继续调用滴答声

turtle.ontimer(滴答,100)

def main():

# 打开/关闭龟动画,并为更新图纸设置延迟。

turtle.tracer假)

初始化()

设置时钟(160)

turtle.tracer(True)

勾选()

turtle.mainloop()

if __name__=='__main__ ':

主()

画一个边长为60的正方形,并填充为红色,边框为蓝色

#-*-编码:utf-8 -*-

进口甲鱼

turtle.reset()

a=60

turtle.fillcolor('红色)

turtle.pencolor('蓝色)

乌龟冥想(10)

turtle.fill(True)

左转弯(90度)

龟。前进(一)

左转弯(90度)

龟。前进(一)

左转弯(90度)

龟。前进(一)

左转弯(90度)

龟。前进(一)

turtle.fill(False)

最后一个实例:

来自numpy导入*

从随机导入随机

进口甲鱼

turtle.reset()

x=数组([[.5],[.5]])

p=[0.85,0.92,0.99,1.00]

A1=数组([[0.85,0.04],

[-0.04,85]])

b1=数组([[0],[1.6]])

A2=数组([[0.20,-0.26],

[0.23,0.22]])

b2=数组([[0],[1.6]])

A3=数组([[-0.15,0.28],

[0.26,0.24]])

b3=数组([[0],[0.44]])

A4=数组([[0,0],

[0,0.16]])

turtle.color('蓝色')

cnt=1

虽然正确:

cnt=1

如果cnt==2000:

破裂

r=随机()

如果r p[0]:

x=dot(A1,x) b1

elif r p[1]:

x=点(A2,x) b2

elif r p[2]:

x=点(A3,x) b3

否则:

x=点(A4,x)

#打印x[1]

turtle.up()

turtle.goto(x[0][0] * 50,x[1][0] * 40 - 240)

turtle.down()

turtle.dot()

总结

关于Python内置模块turtle drawing在本文中的详细解释就到此为止。希望对你有帮助。感兴趣的朋友可以继续参考这个网站:

Python中turtle作图示例

使用Python的turtle模块画图的方法

如有不足之处,欢迎留言指出。感谢您对本网站的支持!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: