python海龟turtle绘图详细介绍

发布于 2023-03-29 14:19:27

画布

画布就是turtle展开用于绘图区域,可以设置它的大小和初始位置。

设置画布大小

turtle.screensize(canvwidth=None,canvheight=None,bg=None),参数分别为画布的宽(单位像素),高,背景颜色。

如:turtle.screensize(800,600,"green")

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

turtle.setup(width=0.5,height=0.75,startx=None,starty=None),参数:width,height:输入宽和高为整数时,表示像素;为小数时,表示占据电脑屏幕的比例,(startx,starty):这一坐标表示矩形窗口左上角顶点的位置,如果为空,则窗口位于屏幕中心。

如:turtle.setup(width=0.6,height=0.6)

turtle.setup(width=800,height=800,startx=100,starty=100)

画笔

在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向),turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。

画笔的属性

画笔(画笔的属性,颜色、画线的宽度等)

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

2)turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green","red",也可以是RGB3元组。

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

命令

编辑 播报

操纵海龟绘图有着许多的命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令,其他的是其他命令。

画笔运动命令

<div class="para" label-module="para" data-id="gnvifkz311" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">命令</div><div class="para" label-module="para" data-id="gnvifkz35e" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">说明</div>
<div class="para" label-module="para" data-id="gnvifkz3bo" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.forward(distance)</div><div class="para" label-module="para" data-id="gnvifkz3g0" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">向当前画笔方向移动distance像素长度</div>
<div class="para" label-module="para" data-id="gnvifkz3ly" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.backward(distance)</div><div class="para" label-module="para" data-id="gnvifkz3q8" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">向当前画笔相反方向移动distance像素长度</div>
<div class="para" label-module="para" data-id="gnvifkz3vb" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.right(degree)</div><div class="para" label-module="para" data-id="gnvifkz3zi" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">顺时针移动degree°</div>
<div class="para" label-module="para" data-id="gnvifkz45b" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.left(degree)</div><div class="para" label-module="para" data-id="gnvifkz49g" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">逆时针移动degree°</div>
<div class="para" label-module="para" data-id="gnvifkz4f9" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.pendown()</div><div class="para" label-module="para" data-id="gnvifkz4je" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">移动时绘制图形,缺省时也为绘制</div>
<div class="para" label-module="para" data-id="gnvifkz4oy" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.goto(x,y)</div><div class="para" label-module="para" data-id="gnvifkz4t3" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">将画笔移动到坐标为x,y的位置</div>
<div class="para" label-module="para" data-id="gnvifkz4yv" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.penup()</div><div class="para" label-module="para" data-id="gnvifkz532" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">提起笔移动,不绘制图形,用于另起一个地方绘制</div>
<div class="para" label-module="para" data-id="gnvifkz58x" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.circle()</div><div class="para" label-module="para" data-id="gnvifkz5d6" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆</div>
<div class="para" label-module="para" data-id="gnvifkz5m6" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">setx( )</div><div class="para" label-module="para" data-id="gnvifkz5s6" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">将当前x轴移动到指定位置</div>
<div class="para" label-module="para" data-id="gnvifkz5yj" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">sety( )</div><div class="para" label-module="para" data-id="gnvifkz62v" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">将当前y轴移动到指定位置</div>
<div class="para" label-module="para" data-id="gnvifkz691" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">setheading(angle)</div><div class="para" label-module="para" data-id="gnvifkz6d9" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">设置当前朝向为angle角度</div>
<div class="para" label-module="para" data-id="gnvifkz6i1" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">home()</div><div class="para" label-module="para" data-id="gnvifkz6m8" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">设置当前画笔位置为原点,朝向东。</div>
<div class="para" label-module="para" data-id="gnvifkz6rx" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">dot(r)</div><div class="para" label-module="para" data-id="gnvifkz6w2" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">绘制一个指定直径和颜色的圆点</div>
### 画笔控制命令 <caption style="font-weight: 700; padding-right: 0px; padding-bottom: 9px; padding-left: 0px; font-size: 14px;"> </caption>
<div class="para" label-module="para" data-id="gnvifkz74t" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">命令</div><div class="para" label-module="para" data-id="gnvifkz78u" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">说明</div>
<div class="para" label-module="para" data-id="gnvifkz7e5" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.fillcolor(colorstring)</div><div class="para" label-module="para" data-id="gnvifkz7i8" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">绘制图形的填充颜色</div>
<div class="para" label-module="para" data-id="gnvifkz7o4" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.color(color1, color2)</div><div class="para" label-module="para" data-id="gnvifkz7si" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">同时设置pencolor=color1, fillcolor=color2</div>
<div class="para" label-module="para" data-id="gnvifkz7ya" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.filling()</div><div class="para" label-module="para" data-id="gnvifkz81l" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">返回当前是否在填充状态</div>
<div class="para" label-module="para" data-id="gnvifkz87f" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.begin_fill()</div><div class="para" label-module="para" data-id="gnvifkz8bk" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">准备开始填充图形</div>
<div class="para" label-module="para" data-id="gnvifkz8hc" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.end_fill()</div><div class="para" label-module="para" data-id="gnvifkz8k9" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">填充完成</div>
<div class="para" label-module="para" data-id="gnvifkz8q2" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.hideturtle()</div><div class="para" label-module="para" data-id="gnvifkz8td" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">隐藏画笔的turtle形状</div>
<div class="para" label-module="para" data-id="gnvifkz8z7" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.showturtle()</div><div class="para" label-module="para" data-id="gnvifkz939" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">显示画笔的turtle形状</div>
### 全局控制命令
<div class="para" label-module="para" data-id="gnvifkz9c4" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">命令</div><div class="para" label-module="para" data-id="gnvifkz9g5" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">说明</div>
<div class="para" label-module="para" data-id="gnvifkz9l5" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.clear()</div><div class="para" label-module="para" data-id="gnvifkz9pf" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">清空turtle窗口,但是turtle的位置和状态不会改变</div>
<div class="para" label-module="para" data-id="gnvifkz9v6" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.reset()</div><div class="para" label-module="para" data-id="gnvifkz9ze" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">清空窗口,重置turtle状态为起始状态</div>
<div class="para" label-module="para" data-id="gnvifkza3y" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.undo()</div><div class="para" label-module="para" data-id="gnvifkza82" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">撤销上一个turtle动作</div>
<div class="para" label-module="para" data-id="gnvifkzacx" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.isvisible()</div><div class="para" label-module="para" data-id="gnvifkzah4" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">返回当前turtle是否可见</div>
<div class="para" label-module="para" data-id="gnvifkzamv" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">stamp()</div><div class="para" label-module="para" data-id="gnvifkzaqx" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">复制当前图形</div>
<div class="para" label-module="para" data-id="gnvifkzaw0" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.write(s [,font=("font-name",font_size,"font_type")])</div><div class="para" label-module="para" data-id="gnvifkzb0h" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项</div>
### 其他命令
<div class="para" label-module="para" data-id="gnvifkzba6" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">命令</div><div class="para" label-module="para" data-id="gnvifkzbe5" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">说明</div>
<div class="para" label-module="para" data-id="gnvifkzbkq" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.mainloop()或turtle.done()</div><div class="para" label-module="para" data-id="gnvifkzbpr" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">启动事件循环 -调用Tkinter的mainloop函数。</div><div class="para" label-module="para" data-id="gnvifkzbrd" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">必须是乌龟图形程序中的最后一个语句。</div>
<div class="para" label-module="para" data-id="gnvifkzbwh" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.mode(mode=None)</div><div class="para" label-module="para" data-id="gnvifkzc3m" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">设置乌龟模式(“standard”,“logo”或“world”)并执行重置。如果没有给出模式,则返回当前模式。</div><div class="para" label-module="para" data-id="gnvifkzc58" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">模式</div><div class="para" label-module="para" data-id="gnvifkzc6t" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">初始龟标题</div><div class="para" label-module="para" data-id="gnvifkzc8e" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">正角度</div><div class="para" label-module="para" data-id="gnvifkzc9y" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">standard</div><div class="para" label-module="para" data-id="gnvifkzcbj" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">向右(东)</div><div class="para" label-module="para" data-id="gnvifkzcct" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">逆时针</div><div class="para" label-module="para" data-id="gnvifkzced" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">logo</div><div class="para" label-module="para" data-id="gnvifkzcfy" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">向上(北)</div><div class="para" label-module="para" data-id="gnvifkzchj" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">顺时针</div>
<div class="para" label-module="para" data-id="gnvifkzcno" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.delay(delay=None)</div><div class="para" label-module="para" data-id="gnvifkzcqr" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">设置或返回以毫秒为单位的绘图延迟。</div>
<div class="para" label-module="para" data-id="gnvifkzcwm" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.begin_poly()</div><div class="para" label-module="para" data-id="gnvifkzd0y" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。</div>
<div class="para" label-module="para" data-id="gnvifkzd6y" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.end_poly()</div><div class="para" label-module="para" data-id="gnvifkzdbe" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。</div>
<div class="para" label-module="para" data-id="gnvifkzdg3" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">turtle.get_poly()</div><div class="para" label-module="para" data-id="gnvifkzdk8" style="overflow-wrap: break-word; margin: 0px; line-height: 24px; zoom: 1; height: auto; word-break: break-all;">返回最后记录的多边形。</div>
[1]
0 条评论

发布
问题