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()

效果图

Python-Turtle 简易教程

 

自己写的……嗯,还是不说了。只要设计好用基本图形(也可以自定义的基本图形)有规律的构成图案,用代码实现就很简单了。

现在简单分析上面的代码:

  1.  

    import turtle
    import random
    
    class MyTurtle(turtle.Turtle):
        ...

    首先导入 我们要用的turtle 模块,以及生产随机数的random模块。

    自定义一个MyTurtle类,继承turtle模块中的Turtle类,在其中我们可以自定义一些方法。

  2.  

     #画一个初始角度为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°

  3.  

    #随机获取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模式设置颜色

  4.  

    #实例化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

  5.  

    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

Python-Turtle 简易教程

 

 

相关文章: