Python 用turtle实现用正方形画圆的例子
最近发现一个很有意思的画图的python库,叫做turtle,这里先说下用turtle这个库来实现用正方形画圆的思路。
每次都用乌龟(turtle)
先看完成的图形和代码。
代码如下:
importturtle window=turtle.Screen()#设置好画图的基本参数 window.bgcolor(“blue”) wugui=turtle.Turtle() wugui.shape(“turtle”) wugui.color(“red”) wugui.speed(5) foriinrange(120):#这里设定正方形的个数 wugui.forward(100) wuguiright(90) wugui.forward(100) wugui.right(90) wugui.forward(100) wugui.right(90) wugui.forward(100) wugui.right(93)#这里决定每次旋转角度,也就决定了需要画正方形的次数。 window.exitonclick()
代码应该很简单易懂,就不再说了。turtle真的是非常强大的一个绘图工具,可以绘制各种各样有趣的图形,详情请看turtle官方文档,这里说点基本的参数与用法吧。主要包括两部分,乌龟与画布。
乌龟方法
乌龟运动
乌龟移动与绘画
forward()|fd()向前移动指定的距离。参数:(integerorfloat))一个数字
backward()|bk()|back()向后移动指定的距离。参数:(integerorfloat))一个数字
right()|rt()left()|lt()向右旋转指定的角度。参数:(integerorfloat))一个数字
goto()|setpos()|setposition()去到位置(x,y)。参数:(x,y=None))一个数字
setx()设置X位置。参数:(integerorfloat)一个数字
sety()设置Y位置。参数:(integerorfloat)一个数字
setheading()|seth()方向设置为to_angle.就是东西南北方向,上北下南左西右东
home()移动到原点–坐标(0,0):并将其标题设置为其起始方向
circle()绘制一个给定半径的圆。参数:(radius,extent,steps)(一个数字__半径,如果值为正则逆时针,负数为顺时针__,一个数字,执行的步数)
dot()用颜色画出一个直径大小的圆点。参数:(size,color)(一个大于1的整数_可None,颜色值)
stamp()将当前位置上的形状复制到画布上,返回stamp_id.可通过下方的clearstamp删除
clearstamp()删除stamp()返回来的值,参数:(stamp_id)stamp函数返回值
clearstamps()删除所有的stamp,默认无参数,删除所有
undo()撤销上一步动作
speed()乌龟爬行速度,我们这设置的是5,不设置为最快,直接生成
乌龟当前状态
position()|pos()当前位置
towards()返回与指定点之间的角度参数:(X,Y)一个位置
xcor()返回乌龟X坐标
ycor()返回乌龟Y坐标
heading()返回当前乌龟的方向值
distance()返回乌龟与坐标点之间的距离。参数:(X,Y)一个位置
设置与测量
degrees()设置整个圆的角度,最好不要动。参数:(integerorfloat)一个整数
radians()将角度测量单位设置为弧度。360度就是2π
画笔控制
绘画状态
pendown()|pd()|down()将笔落下放在图上,移动的时候将会绘图
penup()|pu()|up()将笔提起来,移动的时候将不会绘图
pensize()|width()设置线条的粗细。参数:(width)一个正数
pen()使用键值对设置笔的属性
“shown”:True/False显示 “pendown”:True/False笔落下 “pencolor”:color-stringorcolor-tuple笔的颜色 “fillcolor”:color-stringorcolor-tuple填充颜色 “pensize”:positivenumber笔大小(正整数) “speed”:numberinrange0..10绘画速度(范围0-10) “resizemode”:“auto”or“user”or“noresize”大小调整模式 “stretchfactor”:(positivenumber,positivenumber)拉伸参数 “outline”:positivenumber外部 “tilt”:number倾斜
isdown()如果笔停止返回True,反之返回False
颜色控制
color()颜色,直接使用返回当前笔颜色与填充颜色
pencolor()设置笔的颜色
fillcolor()设置笔的填充颜色
填充
filling()返回填充状态,
begin_fill()在填充之前使用
end_fill()结束填充
更多绘画控制
reset()重置所有参数
clear()删除绘画,与reset不同之处仅仅是删除图形,参数保留
write()写文字
arg–objecttobewrittentotheTurtleScreen写到TurtleScreen的参数 move–True/False移动 align–oneofthestrings“left”,“center”orright”对齐参数3选1(left,right,center) font–atriple(fontname,fontsize,fonttype)字体
乌龟状态
可视性
showturtle()|st()显示乌龟的形状
hideturtle()|ht()隐藏乌龟的形状
isvisible()是否可见,返回TrueorFalse
外表
shape()设置乌龟的图形形状,可选(“arrow”,“turtle”,“circle”,“square”,“triangle”,“classic”)
resizemode()大小调整模式
“auto”:adaptstheappearanceoftheturtlecorrespondingtothevalueofpensize.由画笔大小决定(自动) “user”:adaptstheappearanceoftheturtleaccordingtothevaluesofstretchfactorandoutlinewidth(outline),由拉伸参数决定 “noresize”:noadaptionoftheturtle'sappearancetakesplace.不调整
shapesize()|turtlesize()返回笔的属性。
shearfactor()设置或者返回当前剪切因子
settiltangle()与tilt()一样,只是可以为空,则返回当前旋转角度
tiltangle()弃用
tilt()设置当前乌龟角度,不调整乌龟前进方向(仅仅改变乌龟样子)
shapetransform()设置或返回乌龟的形状的当前转换矩阵
get_shapepoly()返回当前形状的坐标
监听动作
onclick()鼠标点击事件
fun–afunctionwithtwoargumentswhichwillbecalledwiththecoordinatesoftheclickedpointonthecanvas函数需要有两个参数 num–numberofthemouse-button,defaultsto1(leftmousebutton)单击次数,默认1 add–TrueorFalse–ifTrue,anewbindingwillbeadded,otherwiseitwillreplaceaformerbinding添加新的绑定函数,否则替代之前函数 例子:defturn(x,y): 。。。left(180) onclick(turn)
onrelease()鼠标释放事件,同上
ondrag()鼠标移动事件,同上
乌龟一些特殊方法
begin_poly()开始记录多边形的顶点,当前点为起始点
end_poly()结束记录多边形的顶点,当前点为起始点
get_poly()返回最后记录的多边形
clone()复制一个一模一样的乌龟
getturtle()|getpen()获取trutle对象本身
getscreen()获取画布对象
setundobuffer()设置或禁用中断器
undobufferentries()返回undobuffer中的条目数
画布的方法
窗口控制
bgcolor()设置或返回当前画布的背景颜色
bgpic()设置或返回当前画布的背景图片名称
clear()|clearscreen()清除图形
reset()|resetscreen()重置画布
screensize()画布大小
canvwidth–positiveinteger,newwidthofcanvasinpixels宽度 canvheight–positiveinteger,newheightofcanvasinpixels高度 bg–colorstringorcolor-tuple,newbackgroundcolor颜色
setworldcoordinates()全局坐标
llx–anumber,x-coordinateoflowerleftcornerofcanvas左下X坐标 lly–anumber,y-coordinateoflowerleftcornerofcanvas左下X坐标 urx–anumber,x-coordinateofupperrightcornerofcanvas右下X坐标 ury–anumber,y-coordinateofupperrightcornerofcanvas右下X坐标
动画控制
delay()动画延迟(毫秒)参数:(integer)一个数字
tracer()开启动画,设置延迟
n–nonnegativeintegern个动作执行一次 delay–nonnegativeinteger延迟,毫秒
update()更新画布,当tracer关闭时使用
画布监听
listen()开启监听,将鼠标定位到画布
onkey()|onkeyrelease()键盘弹起(需要位于焦点上,使用上面listen后)
fun–afunctionwithnoargumentsorNone动作函数
key–astring:key(e.g.“a”)orkey-symbol(e.g.“space”)按键
onkeypress()键盘按下事件,同上
onclick()|onscreenclick()鼠标点击事件
fun–afunctionwithtwoargumentswhichwillbecalledwiththecoordinatesoftheclickedpointonthecanvas函数需要两个参数
num–numberofthemouse-button,defaultsto1(leftmousebutton)点击次数
add–TrueorFalse–ifTrue,anewbindingwillbeadded,otherwiseitwillreplaceaformerbinding是否是添加,还是替换
ontimer()计时器
fun–afunctionwithnoarguments无需函数
t–anumber>=0事件间隔
mainloop()|done()开始事件循环,必须是乌龟绘画中的最后一个函数
设置与特殊方法
mode()绘图模式,3选1“standard”,“logo”or“world”
colormode()颜色模式,1.0或者255
getcanvas()返回当前TurtleScreen.的Canvas
getshapes()返回当前可用形状
register_shape()|addshape()3种调用方式。
1.直接调用图片。screen.register_shape(“turtle.gif”)
2.调用形状,制定点位置。
screen.register_shape("triangle",((5,-3),(0,5),(-5,-3)))
3,调用形状,名字随便取
turtles()返回乌龟list数组
window_height()返回窗口高度
window_width()返回窗口宽度
输入方法
textinput()文字输入
title–string输入名字
prompt–string输入的文本
numinput()数字输入
title–string输入名字
prompt–string输入文本
default–number(optional)默认
minval–number(optional)最小
maxval–number(optional)最大
屏幕特有方法
bye()关闭turtle窗口
exitonclick()鼠标点击关闭窗口
setup()设置主窗口参数
width–ifaninteger,asizeinpixels,ifafloat,afractionofthescreen;defaultis50%ofscreen宽度
height–ifaninteger,theheightinpixels,ifafloat,afractionofthescreen;defaultis75%ofscreen高度
startx–ifpositive,startingpositioninpixelsfromtheleftedgeofthescreen,ifnegativefromtherightedge,ifNone,centerwindowhorizontally左边开始位置
startx–ifpositive,startingpositioninpixelsfromthetopedgeofthescreen,ifnegativefromthebottomedge,ifNone,centerwindowvertically右边开始位置
title()设置绘画窗口标题
以上这篇Python用turtle实现用正方形画圆的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。