zoukankan      html  css  js  c++  java
  • Python turtle库的学习笔记

     python turtle 库的学习笔记

            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 import turtle
     2 turtle.setup(650,350,200,200)
     3 turtle.penup()
     4 turtle.fd(-250)
     5 turtle.pendown()
     6 turtle.pensize(15)
     7 turtle.pencolor("#00FF00")
     8 turtle.seth(-40)
     9 for i in range(4):
    10     turtle.circle(40,80)
    11     turtle.circle(-40,80)
    12 turtle.circle(40,80/2)
    13 turtle.fd(40)
    14 turtle.circle(16,180)
    15 turtle.fd(40*2/3)
    16 turtle.done()

    效果如图:

      

    (2)玫瑰花

     1 import turtle
     2 
     3 # 设置初始位置
     4 turtle.penup()
     5 turtle.left(90)
     6 turtle.fd(200)
     7 turtle.pendown()
     8 turtle.right(90)
     9 
    10 # 花蕊
    11 turtle.fillcolor("red")
    12 turtle.begin_fill()
    13 turtle.circle(10,180)
    14 turtle.circle(25,110)
    15 turtle.left(50)
    16 turtle.circle(60,45)
    17 turtle.circle(20,170)
    18 turtle.right(24)
    19 turtle.fd(30)
    20 turtle.left(10)
    21 turtle.circle(30,110)
    22 turtle.fd(20)
    23 turtle.left(40)
    24 turtle.circle(90,70)
    25 turtle.circle(30,150)
    26 turtle.right(30)
    27 turtle.fd(15)
    28 turtle.circle(80,90)
    29 turtle.left(15)
    30 turtle.fd(45)
    31 turtle.right(165)
    32 turtle.fd(20)
    33 turtle.left(155)
    34 turtle.circle(150,80)
    35 turtle.left(50)
    36 turtle.circle(150,90)
    37 turtle.end_fill()
    38 
    39 # 花瓣1
    40 turtle.left(150)
    41 turtle.circle(-90,70)
    42 turtle.left(20)
    43 turtle.circle(75,105)
    44 turtle.setheading(60)
    45 turtle.circle(80,98)
    46 turtle.circle(-90,40)
    47 
    48 # 花瓣2
    49 turtle.left(180)
    50 turtle.circle(90,40)
    51 turtle.circle(-80,98)
    52 turtle.setheading(-83)
    53 
    54 # 叶子1
    55 turtle.fd(30)
    56 turtle.left(90)
    57 turtle.fd(25)
    58 turtle.left(45)
    59 turtle.fillcolor("green")
    60 turtle.begin_fill()
    61 turtle.circle(-80,90)
    62 turtle.right(90)
    63 turtle.circle(-80,90)
    64 turtle.end_fill()
    65 
    66 turtle.right(135)
    67 turtle.fd(60)
    68 turtle.left(180)
    69 turtle.fd(85)
    70 turtle.left(90)
    71 turtle.fd(80)
    72 
    73 # 叶子2
    74 turtle.right(90)
    75 turtle.right(45)
    76 turtle.fillcolor("green")
    77 turtle.begin_fill()
    78 turtle.circle(80,90)
    79 turtle.left(90)
    80 turtle.circle(80,90)
    81 turtle.end_fill()
    82 
    83 turtle.left(135)
    84 turtle.fd(60)
    85 turtle.left(180)
    86 turtle.fd(60)
    87 turtle.right(90)
    88 turtle.circle(200,60)

    效果如图:

     



  • 相关阅读:
    LeetCode分类专题(五)——动态规划1-子序列
    LeetCode分类专题(四)——双指针和滑动窗口1
    LeetCode分类专题(三)——二分查找1
    消息队列(一)——Kafka概述
    Java多线程(五)——synchronized关键字原理
    Java多线程(四)——volatile关键字原理
    Redis(五)——主从复制、哨兵
    Redis(四)——过期、持久化、事件
    Redis(三)——底层数据结构
    MySQL知识点
  • 原文地址:https://www.cnblogs.com/tantan0914/p/12463039.html
Copyright © 2011-2022 走看看