Python标准库——turtle库

本文详细介绍了Python的turtle模块,用于图形绘制。内容涵盖turtle库的导入方式、窗体函数、画笔状态函数和运动函数。通过实例展示了如何绘制粉红爱心、红色五角星、正方形螺旋线、城市剪影、四阶同心圆、钢琴键、叠加等边三角形、金色三角形、五种多边形、树形图、花形图、星形图、类斯诺克图、领结、三菱、螺旋状正方形和嵌套五边形等复杂图形,帮助读者掌握turtle库的使用技巧。
摘要由CSDN通过智能技术生成

一、概述

turtle(海龟)是Python重要的标准库之一,它能够进行基本的图形绘制,其概念诞生于1969年。turtle是最有价值的程序设计入门实践库,它是程序设计入门层面最常用的基本绘图库。

turtle的绘图原理:

  1. 有一只海龟处于画布正中心,由程序控制在画布上游走;
  2. 海龟走过的轨迹形成了绘制的图形
  3. 海龟由程序控制,可改变其大小,颜色等

使用 import 保留字对 turtle 库的引用有以下三种方式:

  1. import turtle
import turtle
turtle.circle(200)
  1. from turtle import *
from turtle import * 
circle(200)
  1. import turtle as t
import turtle as t
t.circle(200)

二、函数

1.窗体函数

turtle.setup()函数与窗体有关,定义如下:
turtle.setup(width,height,startx,starty)
作用:设置主窗体的大小和位置

参数:
width:窗口宽度。如果值是整数,表示像素值;如果值是小数,表示窗口宽度与屏幕的比例
height:窗口高度。如果值是整数,表示像素值;如果值是小数,表示窗口高度与屏幕的比例
startx:窗口左侧与屏幕右侧的像素距离。如果值是None,窗口位于屏幕水平正中央。
starty:窗口顶部与屏幕顶部的像素距离。如果值是None,窗口位于屏幕垂直正中央。

2.画笔状态函数

函数描述
pendown( )放下画笔
penup( )提起画笔
pensize(width)设置画笔线条的粗细为指定大小
pencolor( )设置画笔的颜色
color( a,b)同时设置画笔和填充颜色
begin_fill( )填充图形前,调用该方法
end_fill( )填充图形结束
filling( )返回填充的状态,True为填充。False为未填充
clear( )清空当前窗口,但不改变当前画笔的位置
reset( )清空当前窗口,并重置位置等状态为默认值
screensize( )设置画布窗口的宽度、高度和背景颜色
hideturtle( )隐藏画笔的turtle形状
showturtle( )显示画笔的turtle形状
isvisible( )如果turtle可见,则返回True
write(str,font=None)输出font字体的字符串

注:pencolor(color)的color可以有三种形式:

  1. 颜色字符串:turtle.color(“purple”)
  2. RGB的小数值:turtle.color(0.63,0.13,0.94)
  3. RGB的元组值:turtle.color((0.63,0.13,0.94))

3.画笔运动函数

函数描述
fd(distance)沿着当前方向前进指定距离
bk(distance)沿着当前相反方向后退指定距离
right(angle)向右旋转angle角度
left(angle)向左旋转angle角度
goto(x,y)移动到绝对坐标(x,y)处
setx(x)修改画笔的横坐标到x,纵坐标不变
sety(y)修改画笔的纵坐标到y,横坐标不变
seth(angle)设置当前朝向为angle角度
home( )设置当前画笔位置为原点,朝向东
circle(radius,e)绘制一个指定半径r和角度e的圆或弧形
dot(r,color)绘制一个指定半径r和颜色color的圆点
undo( )撤销画笔的最后一步动作
speed( )设置画笔的绘制速度,参数为0~10之间

三、实例

python蟒蛇绘制:

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

turtle绘图汇总:

粉红爱心
'''
from turtle import *
color('red', 'pink')
begin_fill()
left(135)
fd(100)
right(180)
circle(50, -180)
left(90)
circle(50, -180)
right(180)
fd(100)
end_fill()
hideturtle()
done()     '''

红色五角星
'''from turtle import *
setup(400,400)
penup()
goto(-100,50)
pendown()
color("red")
begin_fill()
for i in range(5):
    forward(200)
    right(144)
end_fill()
hideturtle()
done()'''

正方形螺旋线
'''
import turtle
n = 10
for i in range(1,10,1):
    for j in [90,180,-90,0]:
        turtle.seth (j)
        turtle.fd(n)
        n += 5       '''

城市剪影
'''
import turtle
turtle.setup(800,300)
turtle.penup()
turtle.fd(-350)
turtle.pendown()
def DrawLine(size):
    for angle in [0,90,-90,-90,90]:
        turtle.left(angle)
        turtle.fd(size)
for i in [20,30,40,50,40,30,20]:
    DrawLine(i)
turtle.hideturtle()
turtle.done()     '''

四阶同心圆
'''
import turtle as t
def DrawCctCircle(n):
    t.penup()
    t.goto(0,-n)
    t.pendown()
    t.circle(n,360)
for i in range(20,100,20):
    DrawCctCircle(i)
t.hideturtle()
t.done()     '''

钢琴键
'''
import turtle as t
t.setup(500,300)
t.penup()
t.goto(-180,-50)   #将画笔移动到绝对位置(–180,–50)处
t.pendown()    #画笔落下
def Drawrect():
    t.fd(40)
    t.left(90)
    t.fd(120)
    t.left(90)
    t.fd(40)
    t.left(90)
    t.fd(120)
    t.penup()
    t.left(90)
    t.fd(42)
    t.pendown()
for i in range(7):
    Drawrect()
t.penup()
t.goto(-150,0)
t.pendown
def DrawRectBlack():
    t.color('black')
    t.begin_fill()
    t.fd(30)
    t.left(90)
    t.fd(70)
    t.left(90)
    t.fd(30)
    t.left(90)
    t.fd(70)
    t.end_fill()
    t.penup()
    t.left(90)
    t.fd(40)
    t.pendown()
DrawRectBlack()
DrawRectBlack()
t.penup()
t.fd(48)
t.pendown()
DrawRectBlack()
DrawRectBlack()
DrawRectBlack()
t.hideturtle()
t.done()   '''

叠加等边三角形
'''
import turtle
turtle.pensize(2)    # 设置画笔宽度为2像素
turtle.color('red')
turtle.fd(160)   # 向小海龟当前行进方向前进160像素
turtle.seth(120)
turtle.fd(160)
turtle.seth(-120)
turtle.fd(160)
turtle.penup()
turtle.seth(0)
turtle.fd(80)
turtle.pendown()
turtle.seth(60)
turtle.fd(80)
turtle.seth(180)
turtle.fd(80)
turtle.seth(-60)
turtle.fd(80)
turtle.hideturtle()
turtle.done()   '''

金色三角形
'''
import turtle as t
t.colormode(255)
t.color(255,215,0)    #设置颜色取值为金色(255,215,0)
t.begin_fill()
for x in range(0,8):      #绘制8条线
    t.forward(200)
    t.left(225)
t.end_fill()
t.hideturtle()
t.done()   '''

五种多边形
'''
from turtle import *
for i in range(5):
    penup()    #画笔抬起
    goto(-200+100*i,-50)
    pendown()
    circle(40,steps=3+i)    #画某个形状
done()    '''

绘制树形图
'''
import turtle as t
def tree(length,level):    #树的层次
    if level <= 0:
        return
    t.forward(length)    #前进方向画 length距离
    t.left(45)
    tree(0.6*length,level-1)
    t.right(90)
    tree(0.6*length,level-1)
    t.left(45)
    t.backward(length)
    return
t.pensize(3)
t.color('green')
t.left(90)
tree(100,6)  '''

花形图
'''
import turtle
for i in range(4):
    turtle.right(90)
    turtle.circle(30,180)   '''

星形图
'''
import turtle
for i in range(4):
    turtle.circle(-90,90)
    turtle.right(180)
'''

类斯诺克图
'''
import turtle
#绘制边长为20的圆形
def drawCircle():
    turtle.pendown()
    turtle.circle(20)
    turtle.penup()
    turtle.fd(40)

#绘制n层的如题干中描述的图形
def drawRowCircle(n):
    for j  in range(n,1,-1):
        for i in range(j):
            drawCircle()
        turtle.fd(-j*40-20)
        turtle.right(90)
        turtle.fd(40)
        turtle.left(90)
        turtle.fd(40)
    drawCircle()
    
#调用函数绘制图形    
drawRowCircle(5)
turtle.hideturtle()
turtle.done()
'''

领结
'''
from turtle import *
pensize(6)
penup()
goto(-100,-50)
pendown()
fillcolor('red')
begin_fill()
goto(-100,50)
goto(100,-50)
goto(100,50)
goto(-100,-50)
penup()
goto(-10,0)
pendown()
right(90)
circle(10,360)
end_fill()
hideturtle()
done()
'''

三菱
'''
import turtle

def Draw():
    turtle.fillcolor("red")
    turtle.begin_fill()
    turtle.fd(100)
    turtle.left(60)
    turtle.fd(100)
    turtle.left(120)
    turtle.fd(100)
    turtle.left(60)
    turtle.fd(100)
    turtle.end_fill()
    
for i in range(3):
    Draw()
turtle.hideturtle()
turtle.done()
'''
螺旋状正方形
'''
import turtle
d = 0
k = 1
for j in range(10):
   for i in range(4):
        turtle.seth(d)
        d += 91
        turtle.fd(k)
        k += 4
turtle.done()
'''

嵌套五边形
'''
import turtle
edge=5
d = 0
k = 1
for j in range(10):
    for i in range(edge):
       turtle.fd(k)
       d += 360/edge
       turtle.seth(d)
       k += 3
turtle.done() '''

八卦图
'''
import turtle as t
t.circle(100)
t.circle(50,180)
t.circle(-50,180)
t.penup()
t.goto(0,140)
t.pendown()
t.circle(10)
t.penup()
t.goto(0,40)
t.pendown()
t.circle(10)
t.done()
'''

同心圆
import turtle as t
def DrawCctCircle(n):
    t.penup()
    t.goto(0,-n)
    t.pendown()
    t.circle(n)
for i in range(20,80,20):
    DrawCctCircle(i)
t.done()




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值