日期:2025/04/03 10:47来源:未知 人气:54
我们知道,Python中有一个很有趣的库Turtle,它是一个很流行的绘制图像的函数库。在绘制图像时,它就像一个小乌龟,根据一组函数指令的控制,在一个横轴为x、纵轴为y的坐标系原点,在这个平面坐标系中移动,通过在屏幕中绘制、填充等操作,在它爬行的路径上绘制图形。
今天,我们来演示下使用Turtle库在屏幕中如何绘制一个可爱的笑脸。先来看下效果
01前置知识点
在绘制笑脸之前,我们来看下这只可爱的小海龟的绘图过程
【导入库】
import turtle
当然,可以直接使用from turtle import *
【准备一块画布(表述可能有误,但这样可以这样理解)】
turtle.setup(width,height,startx,starty)
width:画布宽度
height:画布高度
startx:画布x坐标
starty:画布y坐标
当startx和starty参数不赋值时,默认画布窗口居中。当然,你也可以不传入任何参数,使用turtle.setup(),Turtle会为你自动准备一块画布。
在绘画之前,我们还要进行一些个性化的设置。
比如,如果不想显示小海龟,如何操作?
turtle.hideturtle()# 隐藏小乌龟
turtle.showturtle()# 显示小乌龟
如何清空画布?
turtle.clear()# 清空画板
turtle.reset() #清空画板,并让小乌龟回到初始位置
【画笔控制】
turtle.penup() 别名turtle.pu():画笔抬起,不留下痕迹turtle.pendown() 别名turtle.pd():画笔落下,留下痕迹turtle.pensize(width) 别名turtle.width(width):画笔宽度turtle.pencolor(color):color为颜色字符串或者rgb值【小乌龟移动】
运动控制
绝对坐标:turtle.goto(100,100) # 从当前的点移动到括号内所给坐标
海龟坐标:以小乌龟当前点为坐标,有前方向,后方向,左方向,右方向
turtle.forward(distance) 别名fd(d):向前移动distance(float)
turtle.back(distance)别名bk(d):后退移动distance(float)
方向控制
turtle.circle(r,angle):指沿着海龟左侧的某一点做圆运动
绝对角度:turtle.seth(angle)别名turtle.seth(angle):只改变海龟的行进方向(角度按逆时针),但不运动,angle为绝对度数 ,在平行于X轴的基础上,改变画笔绘制方向
海龟角度:
turtle.left(angle):向左移动angle(float)
turtle.right(angle):向右移动angle(float)
02妥善保存
下面几张表格请妥善保存,以备后需!有网友对知识点进行了汇总,这里贴上来供大家学习。
【画笔运动函数】
【画笔控制函数】
【全局控制命令】
【其它命令】
这几张表格由CSDN网友提供,想要学习Turtle库的小伙伴赶紧收藏吧!
03案例演示:做一个可爱的笑脸
下面,我们来看一个有趣的案例,这里不再粘贴源代码了。细看这个笑脸,其实就是基本的圆弧、圆组成的。
分步骤绘制即可。
(1)画脸,很简单,它是一个圆圈
penup()goto(-210,0)seth(-90)pendown()pencolor('black')pensize(4)begin_fill()circle(210,360)fillcolor('orange')end_fill()pencolor('black')
(2)嘴巴 ,一个接近半圆的弧度
pensize(5)penup()goto(-150,-30)pendown()seth(-90)circle(150,180)
(3)左眼眶(右眼眶类似)
penup()pensize(4)goto(-180,90)pendown()seth(40)begin_fill()circle(-120,80)penup()goto(-180,90)seth(-130)pendown()circle(15,110)seth(40)circle(-106,83)seth(30)circle(18,105)fillcolor('white')end_fill()
(4)左眼球
pensize(2)penup()goto(50,95)pendown()begin_fill()circle(8,360)fillcolor('black')end_fill()
(5)左边粉红脸蛋(右边类似)
pensize(1)pencolor('pink')begin_fill()penup()goto(-160,50)pendown()seth(-90)for i in range(2):for j in range(10): forward(j) left(9) for j in range(10,0,-1): forward(j) left(9)fillcolor('pink')end_fill()
附上效果图。
好了,今天的内容就到这里了,喜欢Python编程的小伙伴关注我,后续为大家推出更加精彩的内容,程序源代码关注私信“xiaolian”即可获取。