目录
在Python编程中,使用turtle模块进行图形绘制是一种非常有趣和富有教育意义的活动。通过控制一个小海龟(Turtle)在屏幕上移动,我们可以创造出各种美丽的图案和图形。在这篇文章中,我们将探讨如何使用turtle模块来绘制图形,并展示一些有趣的例子。
初识turtle模块
turtle模块是Python标准库的一部分,它提供了一个简单的绘图环境。在这个环境中,我们可以控制一个小海龟在屏幕上移动,它会在移动过程中绘制线条。通过改变海龟的移动方向、速度和颜色,我们可以创造出各种各样的图案。
基本绘图概念
在使用turtle进行绘图之前,我们需要了解一些基本的概念:
- 画布(Screen):这是海龟绘制图形的区域。我们可以通过设置背景颜色来改变画布的背景。
- 海龟(Turtle):海龟是绘图的工具,我们可以控制它的移动和绘制。
- 笔(Pen):海龟用来绘制线条的工具。我们可以设置笔的颜色、大小和是否抬起(不绘制线条)。
- 移动命令:包括前进(forward)、后退(backward)、左转(left)和右转(right)等。
示例:绘制一个正方形
让我们从一个简单的例子开始,绘制一个正方形:
import turtle
# 创建画布和海龟
window = turtle.Screen()
window.bgcolor("white")
t = turtle.Turtle()
# 绘制正方形
for _ in range(4):
t.forward(100) # 向前移动100个单位
t.left(90) # 左转90度
# 隐藏海龟并完成绘图
t.hideturtle()
window.mainloop()
在这个例子中,我们创建了一个画布和一个海龟对象。然后,我们使用一个for循环来重复绘制四条边,每条边长100个单位,并在绘制每条边后左转90度。
示例:绘制彩色螺旋线
接下来,我们将绘制一个彩色的螺旋线:
import turtle
# 创建画布和海龟
window = turtle.Screen()
window.bgcolor("white")
t = turtle.Turtle()
# 设置笔的速度
t.speed(0)
# 绘制彩色螺旋线
colors = ['red', 'orange', 'yellow', 'green', 'blue', 'purple']
for i in range(360):
t.color(colors[i % 6]) # 切换颜色
t.forward(i) # 向前移动
t.left(59) # 左转59度
# 隐藏海龟并完成绘图
t.hideturtle()
window.mainloop()
在这个例子中,我们创建了一个彩色的螺旋线。我们定义了一个颜色列表,并在每次循环中切换颜色。我们还改变了海龟的移动距离和旋转角度,以创造出螺旋的效果。
旋转改为60度:
旋转改为61度:
尝试其它角度:
import turtle
from colorlib import *
w = turtle.Screen()
w.setup(width=500, height=500)
t = turtle.Turtle()
t.speed(0)
angle = 5,10,15,29,30,31,45,59,60,61,89,90,91,120,121,239,240,272
for a in angle:
t.penup()
t.goto(50-w.window_width()/2, w.window_height()/2-50)
t.color("black")
t.write(a, font=("Arial", 20, "normal"))
t.home()
t.pendown()
for i in range(360):
t.color(tuple2str(randcolorTuple()))
t.forward(i)
t.left(a)
if abs(t.xcor()) > w.window_width()/2 or abs(t.ycor()) > w.window_height()/2:
break
t.clear()
w.mainloop()
同时导入colorlib自定义库,详见:python 教你如何创建一个自定义库 colorlib.py-CSDN博客
变换不同的旋转角度,形成各种不同图形,运行效果如下:
附录
常用命令
-
turtle.forward(distance)
: 让海龟向前移动指定的距离。 -
turtle.backward(distance)
: 让海龟向后移动指定的距离。 -
turtle.right(angle)
: 让海龟向右转指定的角度。 -
turtle.left(angle)
: 让海龟向左转指定的角度。 -
turtle.penup()
: 提起笔,移动时不会绘制线条。 -
turtle.pendown()
: 放下笔,开始绘制线条。 -
turtle.goto(x, y)
: 移动海龟到指定的坐标位置。 -
turtle.setpos(x, y)
: 与goto
类似,但不会绘制从当前位置到新位置的直线。 -
turtle.setheading(angle)
: 设置海龟的朝向为指定的角度。 -
turtle.circle(radius)
: 让海龟绘制一个圆。 -
turtle.dot(size)
: 绘制一个点。 -
turtle.color(color)
: 设置笔的颜色。 -
turtle.fillcolor(color)
: 设置填充颜色。 -
turtle.begin_fill()
: 开始填充图形。 -
turtle.end_fill()
: 结束填充图形。 -
turtle.write(text[, align][, font][, move][, clear])
: 让海龟移动到指定位置并写入文本。 -
turtle.speed(speed)
: 设置海龟的移动速度。 -
turtle.hideturtle()
: 隐藏海龟图标。 -
turtle.showturtle()
: 显示海龟图标。 -
turtle.clear()
: 清除海龟的图形和文字。 -
turtle.reset()
: 重置海龟的状态和位置。
其它命令
-
turtle.pensize(width)
: 设置笔的宽度。 -
turtle.pen
: 一个包含笔属性的方法和属性的类,可以用来设置笔的颜色、宽度、是否可见等。 -
turtle.fill
: 一个布尔值属性,用于控制图形填充。 -
turtle.getscreen()
: 返回当前海龟所在的画布对象。 -
turtle.getpen()
: 返回当前笔的状态。 -
turtle.getturtle()
: 返回当前海龟的状态。 -
turtle.getpos()
: 返回海龟的当前位置。 -
turtle.getheading()
: 返回海龟的当前朝向角度。 -
turtle.getx()
和turtle.gety()
: 分别返回海龟当前位置的x和y坐标。 -
turtle.isdown()
: 返回笔是否被放下的状态。 -
turtle.speed()
: 返回或设置海龟的移动速度。 -
turtle.colormode(mode)
: 设置颜色模式。默认模式是1.0,其中颜色值介于0到255之间。如果设置为255,颜色值介于0到1之间。 -
turtle.register_shape(shapename, shapedata)
: 注册一个新的图形形状。 -
turtle.getshapes()
: 返回当前可用形状的列表。 -
turtle.shape(shapename)
: 设置海龟的当前形状。 -
turtle.shapesize(stretch_wid, stretch_len, out=0.0)
: 设置海龟形状的拉伸宽度和长度。 -
turtle.undo()
: 撤销上一次的绘制操作。 -
turtle.clearscreen()
: 清除整个屏幕并重置海龟到初始状态。 -
turtle.screensize(width, height)
: 设置画布的大小。 -
turtle.tracer(n)
: 控制屏幕更新的频率。n
是更新的延迟,单位是1/60秒。
完