本文主要介绍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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。