• turtle库的学习笔记(python)


    turtle库的学习笔记(python)

            turtle(海龟)是Python重要的标准库之一,它能够进行基本的图形绘制。turtle图形绘制的概念诞生于1969年,成功应用于LOGO编程语言。
    turtle库绘制图形有一个基本框架:一个小海龟在坐标系中爬行,其爬行轨迹形成了绘制图形。刚开始绘制时,小海龟位于画布正中央,此处坐标为(0,0),前进方向为水平右方。  在Python3系列版本安装目录的Lib文件下可以找到turtle.py文件。
           

      一、用import保留字对turtle库的引用有如下3种方式,效果相同:

    (1)import turtle

     对turtle库中函数调用采用turtle.<函数名>( )形式:

    (2)from turtle import * (当程序中有多个库时容易混淆产生错误)

    对turtle库中函数调用采用<函数名>( )形式,不再使用turtle.作为前导:

      (3)  import turtle as t

    保留字as将turtle库给予别名t, 则对turtle库中函数调用采用更简洁的t.<函数名>( )形式:

     二、绘图的基础知识

    (1)绘图窗口设置命令

    turtle.setup(400,300,200,100):参数以此(宽,高,距离屏幕左边距离,距离屏幕上方距离),屏幕左上角原点,单位像素。

     (2)运动命令

    turtle.goto(x,y):直接跳转到(x,y)点,以绘图窗口中心为原点,向右为x轴,以上为y轴。

    turtle.fd(d)、turtle.forward(d):以当前方向,往前行进d像素。

    turtle.bk(d)、turtle.backword(d):保持当前方向不变,往后退行d像素。

    turtle.circle(r,angle):从当前位置以r为半径圆的angle角度旋转。

    (3)方向设置命令

    turtle.seth(angle):以x轴方向为起点将方向偏转为angle度,逆时针为正。只改变行进方向但不行进。

    turtle.left(angle):在当前行进方向的基础上,向左旋转angle度。

    turtle.right(angle):在当前行进方向的基础上,向右旋转angle度。

    (4)画笔控制命令

    turtle.penup():抬笔

    turtle.pendown():落笔

    turtle.pensize(width):画笔粗细

    turtle.pencolor(颜色名red/RGB三元组/颜色编码):画笔颜色

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

    turtle.begin_fill():开始填充

    turtle.end_fill():结束填充

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

    (5)全局控制命令

    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的参数也是可选项

    三、绘图举例

    (1)彩色小蟒蛇

     1 #PythonDraw.py
     2 import turtle as tt
     3 def drawSnake(rad,angle,len,neckrad):
     4     colors=["LightCoral","orange","yellow","MediumSpringGreen","cyan","MediumBlue"]#六种颜色
     5     for i in range(len):
     6         tt.color(colors[i])
     7         tt.circle(rad,angle)
     8         tt.circle(-rad,angle)
     9     tt.color("Fuchsia")
    10     tt.circle(rad,angle/2)
    11     tt.fd(rad)
    12     tt.circle(neckrad+1,180)
    13     tt.fd(rad*2/3)
    14 
    15 
    16 def main():
    17     tt.setup(1300,800,0,0)
    18     tt.penup()
    19     tt.goto(-350,0)
    20     tt.pendown()
    21     pythonsize=30
    22     tt.pensize(30)
    23     tt.seth(-40)
    24     drawSnake(40,80,6,pythonsize/2)
    25     
    26 
    27 main()
    28 tt.done()

    Python小海龟绘图之颜色码对照表:

    https://mp.weixin.qq.com/s?src=11&timestamp=1584246963&ver=2217&signature=lMb0twV32ZppcpRo3AfqFMZi0vtHB3oLPjjYMCACHz9PNO7EoncrvGCRWUeg5FYzGioV2aAExFCASNJUG7vGl2R5THDCOZwiQqHF0DvHGH4i7u3KYCY*LPJW11OuBrkj&new=1

     

    (2)玫瑰花的绘制

     

      1 from turtle import *
      2 import time
      3 
      4 setup(5000,5000,0,0)
      5 speed(0)
      6 penup()
      7 pencolor("SaddleBrown")   #改变画笔颜色
      8 seth(90)
      9 fd(340)
     10 seth(0)
     11 pendown()
     12 
     13 speed(5)
     14 begin_fill()
     15 fillcolor('blue')   #改变花瓣颜色
     16 circle(50,30)
     17 
     18 for i in range(10):
     19     fd(1)
     20     left(10)
     21 
     22 circle(40,40)
     23 
     24 for i in range(6):
     25     fd(1)
     26     left(3)
     27 
     28 circle(80,40)
     29 
     30 for i in range(20):
     31     fd(0.5)
     32     left(5)
     33 
     34 circle(80,45)
     35 
     36 for i in range(10):
     37     fd(2)
     38     left(1)
     39 
     40 circle(80,25)
     41 
     42 for i in range(20):
     43     fd(1)
     44     left(4)
     45 
     46 circle(50,50)
     47 
     48 time.sleep(0.1)
     49 
     50 circle(120,55)
     51 
     52 speed(0)
     53 
     54 seth(-90)
     55 fd(70)
     56 
     57 right(150)
     58 fd(20)
     59 
     60 left(140)
     61 circle(140,90)
     62 
     63 left(30)
     64 circle(160,100)
     65 
     66 left(130)
     67 fd(25)
     68 
     69 penup()
     70 right(150)
     71 circle(40,80)
     72 pendown()
     73 
     74 left(115)
     75 fd(60)
     76 
     77 penup()
     78 left(180)
     79 fd(60)
     80 pendown()
     81 
     82 end_fill()
     83 
     84 right(120)
     85 circle(-50,50)
     86 circle(-20,90)
     87 
     88 speed(1)
     89 fd(75)
     90 
     91 speed(0)
     92 circle(90,110)
     93 
     94 penup()
     95 left(162)
     96 fd(185)
     97 left(170)
     98 pendown()
     99 circle(200,10)
    100 circle(100,40)
    101 circle(-52,115)
    102 left(20)
    103 circle(100,20)
    104 circle(300,20)
    105 speed(1)
    106 fd(250)
    107 
    108 penup()
    109 speed(0)
    110 left(180)
    111 fd(250)
    112 circle(-300,7)
    113 right(80)
    114 circle(200,5)
    115 pendown()
    116 
    117 left(60)
    118 begin_fill()
    119 fillcolor('gold')   #改变叶子颜色
    120 circle(-80,100)
    121 right(90)
    122 fd(10)
    123 left(20)
    124 circle(-63,127)
    125 end_fill()
    126 
    127 penup()
    128 left(50)
    129 fd(20)
    130 left(180)
    131 
    132 pendown()
    133 circle(200,25)
    134 
    135 penup()
    136 right(150)
    137 
    138 fd(180)
    139 
    140 right(40)
    141 pendown()
    142 begin_fill()
    143 fillcolor('gold')   #改变叶子颜色
    144 circle(-100,80)
    145 right(150)
    146 fd(10)
    147 left(60)
    148 circle(-80,98)
    149 end_fill()
    150 
    151 penup()
    152 left(60)
    153 fd(13)
    154 left(180)
    155 
    156 pendown()
    157 speed(1)
    158 circle(-200,23)
    159 
    160 
    161 
    162 exitonclick()

     

     

     

     

     

  • 相关阅读:
    go语言——strings和strconv
    go语言——map
    Manjaro配置
    go语言——数组和切片
    go语言——随机数
    go——选择和循环
    go语言——输入输出
    java动态代理实现--基于子类的动态代理
    java动态代理实现--基于接口的动态代理
    spring依赖注入
  • 原文地址:https://www.cnblogs.com/Cute-pig/p/12496619.html
Copyright © 2020-2023  润新知