• Python中关于turtle库的笔记


    一、基础概念

    1、画布:画布就是turtle为我们展开用于绘图区域, 我们可以设置它的大小和初始位置。常用的画布方法有两个:screensize()setup()

    (1)turtle.screensize(canvwidth, canvheight, bg):参数分别为画布的宽(单位像素), 高, 背景颜色

    如:

    turtle.screensize(500,1000,'green')
    2)turtle.setup(width, height, startx, starty):width, height: 

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

    2、画笔:在画布上,默认有一个坐标原点为画布中心的坐标轴, 坐标原点上有一只面朝x轴正方向小乌龟。这里我们描述小乌龟时使用了两个词语:标原点(位置),面朝x轴正方向(方向),turtle绘图中, 就是使用位置方向描述小乌龟(画笔)的状态。

     

    (1)画笔属性:

    1) turtle.pensize():设置画笔的宽度;

    2) turtle.pencolor():没有参数传入,返回当前画笔颜色,传入参数设置画笔颜色,可以是字符串如"green", "red",也可以是RGB 3元组。

    3) turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围[0,10]整数,数字越大越快。

    (2)绘制命令:

    1)turtle.forward(distance)(别名:turtle.fd):向当前画笔方向移动distance像素长度。

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

    3)turtle.right(degree):顺时针移动degree°。

    4)turtle.left(degree):逆时针移动degree°。

    5)turtle.pendown()(别名:turtle.pd(),turtle.down()):移动时绘制图形,缺省时也为绘制。

    6)turtle.goto(x,y):将画笔移动到坐标为x,y的位置。

    7)turtle.penup()(别名:turtle.pu(),turtle.up()):提起笔移动,不绘制图形,用于另起一个地方绘制。

    8)turtle.circle():画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆。

    9)setx( ):将当前x轴移动到指定位置。

    10)sety( ):将当前y轴移动到指定位置。

    11)setheading(angle):设置当前朝向为angle角度。

    12)home():设置当前画笔位置为原点,朝向东。

    13)dot(r):绘制一个指定直径和颜色的圆点。

    14)turtle.fillcolor(colorstring):绘制图形的填充颜色。

    15)turtle.color(color1, color2):同时设置pencolor=color1, fillcolor=color2。

    16)turtle.filling():返回当前是否在填充状态。

    17)turtle.begin_fill():准备开始填充图形。

    18)turtle.end_fill():填充完成。

    19)turtle.hideturtle():隐藏画笔的turtle形状。

    20)turtle.showturtle():显示画笔的turtle形状。

    21)turtle.seth(to_angle)(别名:turtle.setheading(to_angle)):设置小海龟当前前进方向为to_angle,该角度是绝对方向的角度值。

    二、Python绘图实例

    i)蟒蛇

    import turtle
    turtle.setup(650,350,200,200)
    turtle.penup()
    turtle.fd(-250)
    turtle.pendown()
    turtle.pensize(25)
    turtle.pencolor("pink")
    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()

    ii)玫瑰花

    import turtle
    
    # 设置初始位置
    turtle.penup()
    turtle.left(90)
    turtle.fd(200)
    turtle.pendown()
    turtle.right(90)
    
    # 花蕊
    turtle.fillcolor("red")
    turtle.begin_fill()
    turtle.circle(10,180)
    turtle.circle(25,110)
    turtle.left(50)
    turtle.circle(60,45)
    turtle.circle(20,170)
    turtle.right(24)
    turtle.fd(30)
    turtle.left(10)
    turtle.circle(30,110)
    turtle.fd(20)
    turtle.left(40)
    turtle.circle(90,70)
    turtle.circle(30,150)
    turtle.right(30)
    turtle.fd(15)
    turtle.circle(80,90)
    turtle.left(15)
    turtle.fd(45)
    turtle.right(165)
    turtle.fd(20)
    turtle.left(155)
    turtle.circle(150,80)
    turtle.left(50)
    turtle.circle(150,90)
    turtle.end_fill()
    
    # 花瓣1
    turtle.left(150)
    turtle.circle(-90,70)
    turtle.left(20)
    turtle.circle(75,105)
    turtle.setheading(60)
    turtle.circle(80,98)
    turtle.circle(-90,40)
    
    # 花瓣2
    turtle.left(180)
    turtle.circle(90,40)
    turtle.circle(-80,98)
    turtle.setheading(-83)
    
    # 叶子1
    turtle.fd(30)
    turtle.left(90)
    turtle.fd(25)
    turtle.left(45)
    turtle.fillcolor("green")
    turtle.begin_fill()
    turtle.circle(-80,90)
    turtle.right(90)
    turtle.circle(-80,90)
    turtle.end_fill()
    
    turtle.right(135)
    turtle.fd(60)
    turtle.left(180)
    turtle.fd(85)
    turtle.left(90)
    turtle.fd(80)
    
    # 叶子2
    turtle.right(90)
    turtle.right(45)
    turtle.fillcolor("green")
    turtle.begin_fill()
    turtle.circle(80,90)
    turtle.left(90)
    turtle.circle(80,90)
    turtle.end_fill()
    
    turtle.left(135)
    turtle.fd(60)
    turtle.left(180)
    turtle.fd(60)
    turtle.right(90)
    turtle.circle(200,60)

     

     iii)哆啦A梦

     

    import turtle as t
     
    t.speed(10)
    t.pensize(8)
    t.hideturtle()
    t.screensize(500, 500, bg='white')
     
    # 猫脸
    t.fillcolor('#00A1E8')
    t.begin_fill()
    t.circle(120)
    t.end_fill()
     
    t.pensize(3)
    t.fillcolor('white')
    t.begin_fill()
    t.circle(100)
    t.end_fill()
     
    t.pu()
    t.home()
    t.goto(0, 134)
    t.pd()
    t.pensize(4)
    t.fillcolor("#EA0014")
    t.begin_fill()
    t.circle(18)
    t.end_fill()
     
    t.pu()
    t.goto(7, 155)
    t.pensize(2)
    t.color('white', 'white')
    t.pd()
    t.begin_fill()
    t.circle(4)
    t.end_fill()
     
    t.pu()
    t.goto(-30, 160)
    t.pensize(4)
    t.pd()
    t.color('black', 'white')
    t.begin_fill()
    a = 0.4
    for i in range(120):
      if 0 <= i < 30 or 60 <= i < 90:
        a = a+0.08
        t.lt(3) #向左转3度
        t.fd(a) #向前走a的步长
      else:
        a = a-0.08
        t.lt(3)
        t.fd(a)
    t.end_fill()
     
    t.pu()
    t.goto(30, 160)
    t.pensize(4)
    t.pd()
    t.color('black', 'white')
    t.begin_fill()
    for i in range(120):
      if 0 <= i < 30 or 60 <= i < 90:
        a = a+0.08
        t.lt(3) # 向左转3度
        t.fd(a) # 向前走a的步长
      else:
        a = a-0.08
        t.lt(3)
        t.fd(a)
    t.end_fill()
     
    t.pu()
    t.goto(-38,190)
    t.pensize(8)
    t.pd()
    t.right(-30)
    t.forward(15)
    t.right(70)
    t.forward(15)
     
    t.pu()
    t.goto(15, 185)
    t.pensize(4)
    t.pd()
    t.color('black', 'black')
    t.begin_fill()
    t.circle(13)
    t.end_fill()
     
    t.pu()
    t.goto(13, 190)
    t.pensize(2)
    t.pd()
    t.color('white', 'white')
    t.begin_fill()
    t.circle(5)
    t.end_fill()
     
    t.pu()
    t.home()
    t.goto(0, 134)
    t.pensize(4)
    t.pencolor('black')
    t.pd()
    t.right(90)
    t.forward(40)
     
    t.pu()
    t.home()
    t.goto(0, 124)
    t.pensize(3)
    t.pencolor('black')
    t.pd()
    t.left(10)
    t.forward(80)
     
    t.pu()
    t.home()
    t.goto(0, 114)
    t.pensize(3)
    t.pencolor('black')
    t.pd()
    t.left(6)
    t.forward(80)
     
    t.pu()
    t.home()
    t.goto(0,104)
    t.pensize(3)
    t.pencolor('black')
    t.pd()
    t.left(0)
    t.forward(80)
     
    # 左边的胡子
    t.pu()
    t.home()
    t.goto(0,124)
    t.pensize(3)
    t.pencolor('black')
    t.pd()
    t.left(170)
    t.forward(80)
     
    t.pu()
    t.home()
    t.goto(0, 114)
    t.pensize(3)
    t.pencolor('black')
    t.pd()
    t.left(174)
    t.forward(80)
     
    t.pu()
    t.home()
    t.goto(0, 104)
    t.pensize(3)
    t.pencolor('black')
    t.pd()
    t.left(180)
    t.forward(80)
     
    t.pu()
    t.goto(-70, 70)
    t.pd()
    t.color('black', 'red')
    t.pensize(6)
    t.seth(-60)
    t.begin_fill()
    t.circle(80,40)
    t.circle(80,80)
    t.end_fill()
     
    t.pu()
    t.home()
    t.goto(-80,70)
    t.pd()
    t.forward(160)
     
    t.pu()
    t.home()
    t.goto(-50,50)
    t.pd()
    t.pensize(1)
    t.fillcolor("#eb6e1a")
    t.seth(40)
    t.begin_fill()
    t.circle(-40, 40)
    t.circle(-40, 40)
    t.seth(40)
    t.circle(-40, 40)
    t.circle(-40, 40)
    t.seth(220)
    t.circle(-80, 40)
    t.circle(-80, 40)
    t.end_fill()
     
    # 领带
    t.pu()
    t.goto(-70, 12)
    t.pensize(14)
    t.pencolor('red')
    t.pd()
    t.seth(-20)
    t.circle(200, 30)
    t.circle(200, 10)
     
    # 铃铛
    t.pu()
    t.goto(0, -46)
    t.pd()
    t.pensize(3)
    t.color("black", '#f8d102')
    t.begin_fill()
    t.circle(25)
    t.end_fill()
     
     
    t.pu()
    t.goto(-5, -40)
    t.pd()
    t.pensize(2)
    t.color("black", '#79675d')
    t.begin_fill()
    t.circle(5)
    t.end_fill()
     
    t.pensize(3)
    t.right(115)
    t.forward(7)
     
    t.mainloop()
  • 相关阅读:
    ORA00600: internal error code, arguments: [15160]
    My Opinion On Exadata V2
    11g Release 2 enhanced Tablespace Point In Time Recovery
    Oct 12: Patch Set Update Released
    Sqlserver:代理作业调度的时间不准确.作业停止问题
    破解ASA数据库的密码
    Sqlserver:添加 “windows用户组”到sqlserver的格式要求
    Sybase:数据类型(对比sqlserver)
    Sybase:基本语言元素(对比sqlserver)
    ASP 精品网站
  • 原文地址:https://www.cnblogs.com/linantelope/p/12464284.html
Copyright © 2020-2023  润新知