Python海龟绘图详解

hello,大家好,我是Dream。最近有小伙伴私信我,说让我出一篇海龟画图,这其实我也不太能弄得明白,那在这里我和大家一块梳理一下!记得给我点赞收藏哟~

一.画笔和屏幕

这里单独拿开一个讲的话会很抽象,因为一个是线,另一个是面,面是线的载体,线是面的内容

首先大家先运行这一段代码:

import turtle#调用turtle库
turtle.title("绘制第一只海龟")#设置窗口名称
print("开始了")
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)

我们可以看到运行结果是这个:

你会发现他只会存在一瞬间,画完就不见了

我们总会想让美好的瞬间多存在一会,这个时候我们往往会用到time这个库

让我们看一看新的代码:

import turtle
import time
turtle.title("绘制第一只海龟")
print("let"s go")
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
time.sleep(10)#这里调用了time库,sleep顾名思义,睡眠的意思,括号里是秒数,就是你想让他停留几秒的意思

现在我们的画面便可以停留10s了

当然不用time也是可以的,上代码:

import turtle

turtle.title("绘制第一只海龟")
print("开始了")
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
turtle.exitonclick()  # 实现单击鼠标左键时关闭窗口

或者你可以换成 turtle.done() 让画面一直停留

说了折磨多,那屏幕是怎么产生的呢?

来直接看代码:

turtle.setup(width=400, height=300, startx=None, starty=None)

这里是设置屏幕的大小,就像上一段代码一样,如果你没有设置大小的话,那屏幕就是默认值。

此处:

width:设置窗口的宽度,默认为屏幕的 50%。

height:设置窗口的高度,默认为屏幕的 50%。

startx:窗口距离屏幕左边缘多少距离,负值表示距离右边缘,None 表示窗口水平居中。

starty:窗口距离屏幕上边缘多少距离,负值表示距离下边缘,None 表示窗口垂直居中。

当然如果你觉得屏幕背景白色太单调的话你也可以设置一下他的背景颜色或者插入自己的图片(但图片大小不一,想要设置的好看的话,需要自己调节屏幕大小尺寸)

话不多说,直接上代码:

import turtle

turtle.title("绘制第一只海龟")
turtle.bgcolor("green")#这里是设计背景颜色
turtle.bgpic(picname="./imgs/xu.gif")#这里是插入图片,图片必须放在同一路径文件下
#图片格式必须为gif!!!,不然无法识别
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
turtle.done()  # 海龟绘图程序的结束语句(开始主循环)turtle.done()  # 海龟绘图程序的结束语句(开始主循环)


这是我自己的背景:

还行啊吧,我的眼光还是不错的哟~

关于屏幕知识也就这些了,接下来说一下画笔:

拿我们刚才写的代码来说:

import turtle

turtle.title("绘制第一只海龟")
turtle.bgcolor("green")#这里是设计背景颜色
turtle.bgpic(picname="./imgs/xu.gif")
turtle.forward(100)
turtle.left(30) #左转弯和右转弯一个意思不用写
turtle.forward(100)
turtle.done()  

forward表示向前走,left向左拐多少度,back向后,right向右拐多少度,这是最基本的,看点稍微高级一点的:

import turtle
import time
turtle.goto(100, 100)
turtle.goto(-100, 100)
turtle.goto(100, -100)
turtle.goto(-100, -100)
turtle.goto(0, 0)

turtle.penup()#这里指从0开始抬笔,继续路线,只是不画了
turtle.forward(100)
turtle.right(90)
turtle.pendown()#落笔继续画
turtle.color("red")#画笔颜色
turtle.goto(100, -100)
time.sleep(5)

这里:初始位置都是0,就是屏幕中央

放下笔:pendown()

抬起笔:penup()

到指定坐标:goto(x, y)

颜色:color(“cc”)

画笔的颜色主要有:

黄色:yellow

红色:red

蓝色:blue

绿色:green

粉色:pink

紫色:purple

灰色:grey

橘色:orange

那如果你觉得画笔太细咋办,来上代码:

turtle.width(5)

这个帮你调粗细,初始值为1

如果你觉得速度不对呢,来上代码:

turtle.speed(0)  # 设置画笔的速度,0为最快

其中0最快,直接出结果,1最慢,然后从2~10依次加快

那这些就是你要掌握的基础知识了~

二.实战与应用

1.写字

如何在上面写字呢:来来来上代码:

turtle.write( arg, move=False, align="left", font=("Arial", 8, "normal"))

arg:必选参数,用于指定要输出的文字内容,该内容会输出到当前海龟光标的所在位置。

move:可选参数,用于指定是否移动画笔到文本的右下角**,默认为False (不移动)。**

align:可选参数,用于指定文字的对齐方式,其参数值为left(居左)、center(居中)或者right(居右)中的任意一个,默认为 left。

font:可选参数,用于指定字体、字号和字形,通过一个三元组(字体,字号,字形)指定。

说明:字形可设置的值为normal(表示正常)、bold(粗体)、italic(斜体)、underline(下划线)等。

上代码:

import turtle  # 导入海龟绘图模块

turtle.color("green")  # 填充颜色
turtle.up()  # 抬笔
turtle.goto(-300,0)
turtle.down()  # 落笔
turtle.write("徐以鹏比易烊千玺帅亿点。", font=("宋体", 18, "normal"))
turtle.done()  # 海龟绘图程序的结束语句(开始主循环)

那就是这个效果了~

2.用于交互式写字

import turtle  # 导入海龟绘图模块
turtle.color("green")  # 填充颜色
word = turtle.textinput("温馨提示:", "请输入要打印的文字")  # 弹出输入对话框
turtle.write(word, True, font=("宋体", 18, "italic"))  # 输出文字
turtle.done()  # 海龟绘图程序的结束语句(开始主循环)

3.自己控制方向

import turtle


def move():
    turtle.left(90)
    turtle.forward(100)


turtle.listen()#监听鼠标
turtle.onkey(move, "w")#按w进行走动
turtle.done()
import turtle


def move():
    turtle.forward(2)


turtle.listen()
turtle.onkeypress(move, "w")#一直按w才走
turtle.done()

4.拖动小海龟画图

ondrag():表示处理鼠标拖动事件

默认值为1(鼠标左键)、2(鼠标中键,即按下滑轮)、3(鼠标右键)

import turtle

t = turtle.Turtle()
t.shape("turtle")
t.color("green")
turtle.listen()


def fun(x, y):
    t.pendown()
    t.goto(x, y)


t.ondrag(fun, 1)
turtle.done()

5.规定时间后开始画

ontimer() 方法来实现一个计时器,用于达到指定时间时,执行一个操作 

import turtle


def fun():  # 绘制正方形
    for i in range(4):
        turtle.forward(100)
        turtle.left(90)


turtle.getscreen().ontimer(fun, 3000)  # 设置计时器
turtle.done()  # 海龟绘图程序的结束语句(开始主循环) 

到此这篇关于Python海龟绘图详解的文章就介绍到这了,更多相关Python海龟绘图内容请搜索云海天教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持云海天教程!