Python基础(六)

Turtle库

Turtle最早来自于LOGO语言,是专门用于小孩子学习编程的,通过编程模拟一只turtle(海龟)在画
板上爬行绘制图案,后来很多高级语言都移植了海龟绘图,python从2.6之后也将turtle库加入了其内
部库中。由于是内部库,使用import turtle语句就能引入turtle库,绘图主要有以下几个步骤:设置画
板、设置画笔、控制海龟移动绘制图形、色彩填充。

turtle库安装

在命令行窗口输入:pip install turtle

turtle库的重要方法

  1. 设置画布turtle.screensize(canvwidth=None, canvheight=None, bg=None)
    参数分别为画布的宽(单位像素), 高, 背景颜色
  2. 设置画布位置及大小 turtle.setup(width=0.5, height=0.75, startx=None, starty=None)
    width, height: 输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例
    (startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心
  3. 画笔设置:
命令说明
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.speed(speed)画笔绘制的速度范围[0,10]整数
turtle.circle()画圆,半径为正(负),表示圆心在画笔的左边(右边)画圆
  1. 画笔控制命令:
命令说明
turtle.pensize(width)绘制图形时的宽度
turtle.pencolor()画笔颜色
turtle.fillcolor(colorstring)绘制图形的填充颜色
turtle.color(color1, color2)同时设置pencolor=color1, fillcolor=color2
turtle.filling()返回当前是否在填充状态
turtle.begin_fill()准备开始填充图形
turtle.end_fill()填充完成;
turtle.hideturtle()隐藏箭头显示;
turtle.showturtle()与hideturtle()函数对应
  1. 全局控制命令
命令说明
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的参数也是可选项

实例:画一棵漂亮的树

源代码:

import turtle
from random import *
from math import *

def tree(n,l):
    turtle.pd()#下笔
    #阴影效果
    t = cos(radians(turtle.heading()+45))/8+0.25
    turtle.pencolor(t,t,t)
    turtle.pensize(n/3)
    turtle.forward(l)#画树枝

    if n>0:
        b = random()*15+10 #右分支偏转角度
        c = random()*15+10 #左分支偏转角度
        d = l*(random()*0.25+0.7) #下一个分支的长度
        #右转一定角度,画右分支
        turtle.right(b)
        tree(n-1,d)
        #左转一定角度,画左分支
        turtle.left(b+c)
        tree(n-1,d)
        #转回来
        turtle.right(c)
    else:
        #画叶子
        turtle.right(90)
        n=cos(radians(turtle.heading()-45))/4+0.5
        turtle.pencolor(n,n*0.8,n*0.8)
        turtle.circle(3)
        turtle.left(90)
        #添加0.3倍的飘落叶子
        if(random()>0.7):
            turtle.pu()
            #飘落
            t = turtle.heading()
            an = -40 +random()*40
            turtle.setheading(an)
            dis = int(800*random()*0.5 + 400*random()*0.3 + 200*random()*0.2)
            turtle.forward(dis)
            turtle.setheading(t)
            #画叶子
            turtle.pd()
            turtle.right(90)
            n = cos(radians(turtle.heading()-45))/4+0.5
            turtle.pencolor(n*0.5+0.5,0.4+n*0.4,0.4+n*0.4)
            turtle.circle(2)
            turtle.left(90)
            turtle.pu()
            #返回
            t=turtle.heading()
            turtle.setheading(an)
            turtle.backward(dis)
            turtle.setheading(t)
    turtle.pu()
    turtle.backward(l)#退回

turtle.bgcolor(0.5,0.5,0.5)#背景色
turtle.ht()#隐藏turtle
turtle.speed(0)#速度 1-10渐进,0 最快
turtle.tracer(0,0)
turtle.pu()#抬笔
turtle.backward(100)
turtle.left(90)#左转90度
turtle.pu()#抬笔
turtle.backward(300)#后退300
tree(12,100)#递归7层
turtle.done()

在这里插入图片描述

参考资料:https://www.jianshu.com/p/2d92a136813a
参考资料:https://www.cnblogs.com/nowgood/p/turtle.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值