Python-Turtle 简易教程
Python中的Turtle库是自带的一个简单画图库,以tkinter为底层实现。
我们通过控制初始位置为(0,0)的海龟进行移动,在屏幕上留下线条最终构成我们想要的图像。
废话不多说,先上代码:
import turtle
import random
class MyTurtle(turtle.Turtle):
#画一个初始角度为x,边长为x的正方形
def draw_square(self, x):
self.setheading(x)
for i in range(4):
self.forward(x)
self.left(90)
return
#随机获取rgb模式下的颜色的三个参数
def get_color(self):
rgb = []
for i in range(3):
rgb.append(random.randint(0, 255))
return rgb
#设置画笔的颜色
def set_pen_color(self):
self.screen.colormode(255)
self.pencolor(self.get_color())
t = MyTurtle()
t.screen.bgcolor("black")
t.speed(0)
# 遍历1~1000°内的所有角度,随着初始角度增大,正方形的边长也增大
x = 1
while x < 1000:
t.set_pen_color()
t.draw_square(x)
x = x + 1
t.screen.mainloop()
效果图
自己写的……嗯,还是不说了。只要设计好用基本图形(也可以自定义的基本图形)有规律的构成图案,用代码实现就很简单了。
现在简单分析上面的代码:
-
import turtle import random class MyTurtle(turtle.Turtle): ...
首先导入 我们要用的turtle 模块,以及生产随机数的random模块。
自定义一个MyTurtle类,继承turtle模块中的Turtle类,在其中我们可以自定义一些方法。
-
#画一个初始角度为x,边长为x的正方形 def draw_square(self, x): #设置海龟方向 self.setheading(x) for i in range(4): #使海龟向前移动x self.forward(x) #使海龟向逆时针旋转90° self.left(90) return
setheading(a)设置海龟的初始方向为a,将屏幕看成一个二维坐标系,初始位置为(0,0),横向为x轴,纵向为y轴,a为当前方向与x轴的角度。相同作用函数:seth(a)forward(x)使海龟以当前方向向前爬行x距离。同作用函数:fd(x);反作用函数:backward(x)|bk(x)|back(x)注:这三个函数不改变当前方向left(x)使海龟逆时针旋转x°。反作用函数:right(x)使海龟顺时针旋转90° -
#随机获取rgb模式下的颜色的三个参数,以列表的形式返回 def get_color(self): rgb = [] for i in range(3): rgb.append(random.randint(0, 255)) # rgb=[a,b,c] return rgb #设置画笔的颜色 def set_pen_color(self): #可以通过设置colormode,更改设置颜色的方式 self.screen.colormode(255) # 设置画笔颜色 self.pencolor(self.get_color())
colormode(cmode)cmode 为1 或者 255,随后rgb三元组的值必须在0~comde之间pencolor(color=None)设置画笔颜色-
color = None : 放回当前颜色
-
color = string: 通过字符串设置颜色 ,如 black、red……等
-
color = (r,g,b):通过rgb模式设置颜色
-
-
#实例化MyTurtle对象 t = MyTurtle() t.screen.bgcolor("black") t.speed(0)bgcolor(color)设置屏幕颜色,方式同color()speed(s=None)s为0-10的整数或者速度字符串-
None:返回当前速度
-
"fastest":0
-
"fast"::10
-
"normal"::6
-
"slow"::3
-
"slowest"::1
-
-
t.screen.mainloop()
开始事件循环,循环语句为程序最后一条语句。同作用函数:
done()
常用的函数简单总结
| 函数 | 介绍 |
|---|---|
| left(x)/right(x) | 使海龟 逆时针/顺时针 旋转 |
| circle(x) | 以x为半径,以当前方向开始画圆 |
| forward(x)|fd(x) | 前进x,单位为像素 |
| backward(x)|bk(x)|back(x) | 后退x,单位为像素 |
| goto(x,y)|setpos(x,y)|setposition(x,y) | 使海龟沿直线移动到(x,y)坐标处 |
| setx(x)/sety(y) | 设置 x/y 坐标,使海龟水平移动 |
| dot(size,color) | 在当前位置以直径为size画点,颜色为color |
| speed(n) | 设置海龟的移动速度 |
| pendown()|pd()|down() | 使海龟“落地”,移动轨迹在屏幕上显示 |
| penup()|up() | 使海龟“起飞”,移动轨迹在屏幕上不显示 |
| pensize(x) | 设置画笔宽度为x,单位为像素 |
| pencolor(color) | 设置画笔颜色 |
| fillcolor() | 设置填充颜色,当轨迹形成闭合图形时填充的颜色 |
| begin_fill()/end_fill() | 控制颜色填充的时间段,只有在begin_fill()与end_fill()中间的闭合图形才会填充颜色 |
另附官方文档链接
https://docs.python.org/3/library/turtle.html?highlight=turtle#module-turtle
最后
谢谢关注公众号!
——dknight