「这是我参与2022首次更文挑战的第19天,活动详情查看: 2022首次更文挑战

【函数表格整理在最下方】

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。

官方文档网址

turtle

turtle.setup(width, height, startx, starty)

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

  • setup设置窗体大小和位置
  • 4个参数中后两个可选(默认居中)
  • setup()不是必须的
  • turtle.screensize(canvwidth=None, canvheight=None, bg=None)

    参数分别为画布的宽(单位像素), 高, 背景颜色。

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

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

    空间坐标体系

    【demo】

    import turtle
    turtle.goto(100, 100)
    turtle.goto(100, -100)
    turtle.goto(-100, -100)
    turtle.goto(-100, 100)
    turtle.goto(0, 0)
    

    turtle.fd(d)

    turtle.bk(d)

    turtle.circle(r, angle)(以海龟为中心,向左转)

    角度坐标体系

    turtle.seth(angle)

  • seth()改变海龟行进方向
  • seth()只改变方向不行进
  • angle 绝对度数
  • 在这样基础上,继续turtle.fd(d)

    turtle.left(angle)

    turtle.right(angle)

    【demo】

    import turtle
    turtle.left(45)
    turtle.fd(150)
    turtle.right(135)
    turtle.fd(300)
    turtle.left(135)
    turtle.fd(150)
    turtle.done()
    

    RGB色彩体系

    每色取值范围0-255整数或者0-1小数。

    turtle库默认采用RGB小数值,可以使用turtle.colormode(mode)可切换。

  • 1.0: RGB小数值
  • 255:RGB整数值
  • color参数的三种形式

  • 颜色字符串 turtle.pencolor("purple")
  • RGB的小数值:turtle.pencolor(0.63, 0.13, 0.94)
  • RGB的元组值:turtle.pencolor((0.63, 0.13, 0.94))
  • 画笔控制函数

    把海龟想象成画笔,画笔操作后一直有效,一般成对出现。

    turtle.penup() 别名:turtle.pu()

    将画笔抬起,海龟在飞行。

    turtle.pendown() 别名:turtle.pd()

    落下画笔,海龟落下。

  • turtle.pensize(width) 别名:turtle.width(width)
  • 画笔宽度,海龟的腰围。

  • turtle.pencolor(color) color为颜色字符串 或 r,g,b值
  • 画笔颜色,海龟在涂装

  • turtle.speed(speed),设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。
  • turtle.fillcolor(colorstring)绘制图形的填充颜色
  • turtle.hideturtle() 隐藏画笔的turtle形状
  • turtle.showturtle() 显示画笔的turtle形状
  • 运动控制函数

  • 走直线:turtle.forward(d) 别名 turtle.fd(d)
  • d的单位是像素,向前行进,海龟走直线。

    d是行进距离,可以是负数。

    turtle.backward(distance)向当前画笔相反方向移动distance像素长度

    走曲线:turtle.circle(r, extent = None)

    根据半径r绘制extent角度(默认360)的弧形

    圆心默认在海龟左手侧,如果r是负的,圆心在海龟右侧。

  • dot(r) 绘制一个指定直径和颜色的圆点
  • 方向控制函数

    只改变行进方向,不会改变路线。

    分为绝对角度和海龟角度。

  • turtle.setheading(angle) 别名 turtle.seth(angle)
  • 改变行进方向,海龟走角度(改变绝对角度)

  • turtle.left(angle) 海龟向左转
  • turtle.right(angle)海龟向右转
  • 全局控制命令

    turtle.clear()清空turtle窗口,但是turtle的位置和状态不会改变

    turtle.reset() 清空窗口,重置turtle状态为起始状态

    turtle.undo() 撤销上一个turtle动作

    turtle.isvisible() 返回当前turtle是否可见

    turtle.write(s [,font=("font-name",font_size,"font_type")])写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

    【demo】

    import turtle
    turtle.setup(650, 350, 200, 200)
    turtle.penup()
    turtle.fd(-250)
    turtle.pendown()
    turtle.pensize(25)
    turtle.pencolor("purple")
    turtle.seth(-40)
    for i in range(4):
        turtle.circle(40, 80)
        turtle.circle(-40, 80)
    turtle.circle(40, 80/2)
    turtle.fd(40)
    turtle.circle(16, 180)
    turtle.fd(40*2/3)
    turtle.done()
    

    七段数码管日期显示

    import turtle
    import time
    def drawGap(): # 绘制数码管间隔
        turtle.penup()
        turtle.fd(5)
    def drawLine(draw):  # 绘制单线
        drawGap()
        turtle.pendown() if draw else turtle.penup()
        turtle.fd(40)
        drawGap()
        turtle.right(90)
    def drawDigit(digit): # 绘制单个数字
        drawLine(True) if digit in [2,3,4,5,6,8,9] else drawLine(False)
        drawLine(True) if digit in [0,1,3,4,5,6,7,8,9] else drawLine(False)
        drawLine(True) if digit in [0,2,3,5,6,8,9] else drawLine(False)
        drawLine(True) if digit in [0,2,6,8] else drawLine(False)
        turtle.left(90)
        drawLine(True) if digit in [0,4,5,6,8,9] else drawLine(False)
        drawLine(True) if digit in [0,2,3,5,6,7,8,9] else drawLine(False)
        drawLine(True) if digit in [0,1,2,3,4,7,8,9] else drawLine(False)
        turtle.left(180)
        turtle.penup()
        turtle.fd(20)
    def drawData(date):
        turtle.pencolor("red")
        for i in date:
            if i == '-':
                turtle.write("年", font=("Arial", 18, "normal"))
                turtle.pencolor("green")
                turtle.fd(40)
            elif i == '=':
                turtle.write("月", font=("Arial", 18, "normal"))
                turtle.fd(40)
            elif i == '+':
                turtle.write("日", font=("Arial", 18, "normal"))
            else:
                drawDigit(eval(i))
    def main():
        turtle.setup(800,350,200,200)
        turtle.penup()
        turtle.fd(-300)
        turtle.pensize(5)
        turtle.color("purple")
        drawData(time.strftime("%Y-%m=%d+", time.gmtime()))
        turtle.hideturtle()
        turtle.done()
    main()
    
    import turtle
    import time
    # 同时设置pencolor=color1, fillcolor=color2
    turtle.color("red", "yellow")
    turtle.begin_fill()
    for _ in range(50):
    turtle.forward(200)
    turtle.left(170)
    turtle.end_fill()
    turtle.mainloop()
    

    库函数表格整理

    画笔运动命令

    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)

    绘制一个指定直径和颜色的圆点

    画笔控制命令

    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形状

    全局控制命令

    turtle.clear()

    清空turtle窗口,但是turtle的位置和状态不会改变

    turtle.reset()

    清空窗口,重置turtle状态为起始状态

    turtle.undo()

    撤销上一个turtle动作

    turtle.isvisible()

    返回当前turtle是否可见

    stamp()

    复制当前图形

    turtle.write(s [,font=("font-name",font_size,"font_type")])

    写文本,s为文本内容,font是字体的参数,分别为字体名称,大小和类型;font为可选项,font参数也是可选项

    turtle.mainloop()或turtle.done()

    启动事件循环 -调用Tkinter的mainloop函数。

    必须是乌龟图形程序中的最后一个语句。

    turtle.delay(delay=None)

    设置或返回以毫秒为单位的绘图延迟。

    turtle.begin_poly()

    开始记录多边形的顶点。当前的乌龟位置是多边形的第一个顶点。

    turtle.end_poly()

    停止记录多边形的顶点。当前的乌龟位置是多边形的最后一个顶点。将与第一个顶点相连。

    turtle.get_poly()

    返回最后记录的多边形。

    分类:
    后端
    标签: