马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
同学们欢迎来到 Python Turtle库专题微课学习! Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。
' y, \2 D2 A6 @1 V% \6 N 画布就是turtle为我们展开用于绘图区域,我们可以设置它的大小和初始位置。/ }# M8 H/ ]" j4 G7 G3 P/ k' y
设置画布大小
2 s. g( j4 u0 q+ }) O0 m- turtle.screensize(canvwidth=None, canvheight=None, bg=None) #参数分别为画布的宽(单位像素), 高, 背景颜色。
复制代码- turtle.screensize(800,600, "green") #设置背景为绿色,大小为800*600像素
复制代码- turtle.screensize() #返回默认大小(400, 300)
复制代码- turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
% J7 W. f% z9 ^# o - 参数:width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例,(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
复制代码 如下所示:* z0 w; y4 T4 w3 {$ `$ J
- turtle.setup(width=0.6,height=0.6)+ p5 b' [ B9 f8 c9 g& O
- turtle.setup(width=800,height=800, startx=100, starty=100)
复制代码
: t6 S4 Z9 M9 h, l' n5 K' z+ h2.1 画笔的状态
+ `7 C0 v. V' R! ^. L9 @1 Q 在画布上,默认有一个坐标原点为画布中心的坐标轴,坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:坐标原点(位置),面朝x轴正方向(方向), turtle绘图中,就是使用位置方向描述小乌龟(画笔)的状态。4 }& m! g0 c4 P4 A
0 q# ~/ ?. A7 j4 V4 j
2.2 画笔的属性
/ x! D6 {$ H! m; q 画笔(画笔的属性,颜色、画线的宽度等)
- R4 |) O5 L+ Q9 C% q 1) turtle.pensize():设置画笔的宽度;* ?; [4 {5 C3 Z
2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。
7 B( i7 o0 t; F. s: q. z4 Z 3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字 越 大 越 快。6 l9 o8 U" r/ f- X, C! k, w1 U O
5 `% c) I7 u# v
2.3 绘图命令
4 G. |) a4 z6 d3 X: z) T! N N 操纵海龟绘图有着许多命令,这些命令可以划分为3种:一种为运动命令,一种为画笔控制命令,还有一种是全局控制命令。 G- m. H8 `, y/ A
4 E& ]& l( {7 ~5 S7 d6 m: U, y3 D4 Y) }
(1) 画笔运动命令" S( J+ r: t; g1 V) Z
命令 | 说明 | turtle.forward(distance) | 向当前画笔方向移动distance像素长度 | turtle.backward(distance) | 向当前画笔相反方向移动distance像素长度 | turtle.right(degree) | 顺时针移动degree° | turtle.left(degree) | 逆时针移动degree° | turtle.pendown() | 移动时绘制图形,缺省时也为绘制 | turtle.goto(x,y) | 将画笔移动到坐标为x,y的位置 | turtle.penup() | 提起笔移动,不绘制图形,用于另起一个地方绘制 | turtle.circle() | 画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆 | setx() | 将当前x轴移动到指定位置 | sety() | 将当前y轴移动到指定位置 | setheading(angle) | 设置当前朝向为angle角度 | home() | 设置当前画笔位置为原点,朝向东。 | dot(r) | 绘制一个指定直径和颜色的圆点 | # x3 r& f1 o0 G0 ^& D4 m" Y8 L$ _% ]1 t
(2) 画笔控制命令
7 R4 L. x/ m1 V9 d8 n5 D: _% d9 T% f3 I% U% T
命令 | 说明 | turtle.fillcolor(colorstring) | 绘制图形的填充颜色 | turtle.color(color1, color2) | 同时设置pencolor=color1, fillcolor=color2 | turtle.filling() | 返回当前是否在填充状态 | turtle.begin_fill() | 准备开始填充图形 | turtle.end_fill() | 填充完成 | turtle.hideturtle() | 隐藏画笔的turtle形状 | turtle.showturtle() | 显示画笔的turtle形状 |
$ R- N9 Q$ W1 l: W# g5 D: Z
: q" F. g6 o1 f+ S3 }& [0 h8 u(3) 全局控制命令2 d3 B) B# k5 |3 i4 y& C5 X
) b# ^- r& H) r- M+ k
命令 | 说明 | turtle.clear()! N; ~. }0 e( l! w5 V/ d
| 清空turtle窗口,但是turtle的位置和状态不会改变 | turtle.reset() | 清空窗口,重置turtle状态为起始状态 | turtle.undo() | 撤销上一个turtle动作 | turtle.isvisible()7 ]+ @; y. U& G6 L; N, W5 A
| 返回当前turtle是否可见 | stamp() | 复制当前图形 | turtle.write(s [,font=("font-name",font_size,"font_type")]) | 写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项 | " D: J$ m) z2 I2 z) j% [
+ U8 s( ~" ]" `9 J(4) 其他命令
, g; i7 {% C/ o* ]
+ g! c' ]+ n! u" o1 w命令 | 说明 | turtle.mainloop() 或 turtle.done() | 启动事件循环 - 调用Tkinter的mainloop函数( }/ L$ z$ P) I* ^% T9 I
必须是乌龟图形程序中的最后一个语句 | turtle.mode(mode=None) | 设置乌龟模式(“standard”,“logo”或“world”)并执行重置。 如果没有给出模式,则返回当前模式。
8 L' L4 w! m! |% d' q模式 | 初始龟标题 | 正角度 | standard | 向右(东) | 逆时针 | logo | 向上(北) | 顺时针 |
, @! N. j* \% a i! s* P# s$ q4 U5 B, n | turtle.delay(delay=None) | 设置或返回以毫秒为单位的绘图延迟。 | turtle.begin_poly()' N. a7 y5 j0 j) R! J" Y7 S
| 开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。 | | 停止记录多边形的顶点。当前乌龟位置是多边形最后一个顶点,将与第一个顶点相连。 | | 返回最后记录的多边形。 | ) F. Y" Z! q }# @' M2 Q
* C6 m4 i4 w, h3 X0 m6 t7 u6 @
1 G I3 O# ?, H8 ~ 3.1 turtle.circle(radius, extent=None, steps=None)
$ Y, Z! V' \5 S4 I radius(半径):半径为 正 (负),表示圆心在画笔的 左边 (右边)画圆; steps(optional) (做半径为 radius 的 圆 的 内切正多边形,多边形 边数 为 steps )。
6 S+ F0 H' [5 e( o: C" R# X* o* Y- circle(50) # 整圆
( e$ L! H4 z6 ^3 m - circle(50,steps=3) # 三角形( s5 W4 N" L+ F; v7 s4 |/ f: W
- circle(120,180) # 半圆
复制代码 |
|