python详解:turtle库中的画布

说在前面的话:

很开心上一篇文章能够受到大家受欢迎,同时,这一篇文章也是我写博客有史以来第一篇阅读量破千的文章,很感谢大家的支持,谢谢大家。
今天的这一篇博客同样也是关于turtle库,话不多说,直接进入今天的主题。上一篇博客

进入正文:

1.回顾上文:

在进入正文之前,我想先回顾上一篇博客中提到的一个知识点:有关画布中默认原点,不知道大家有没有留意过,即在IDLE中输入以下代码,就会得到如下图中的原点:
在这里插入图片描述

>>> import turtle
>>> turtle.dot(10,‘red’)
>>> turtle.write((0,0),font=(8))
>>> turtle.ht()
>>>turtle.pos()
(0.00,0.00)

这简短的四行代码,相信大家对此不难理解。那么,大伙们是否想过,既然画布中有原点,那么是否可以据此画出数学中的直角坐标系呢?我的回答是——Sure!

2、绘制直角坐标系

在此之前,先看一下效果图:在这里插入图片描述

然后,介绍一下需要用到的函数:

(1)控制小乌龟到达指定的点:
turtle.goto(x,y)
(2)控制画笔(小乌龟)抬笔、落笔:
turtle.penup()
turtle.pendown()

当然也可以简化一下:

turtle.up()
turtle.down()
(3)在画布中写字:
turtle.write(arg, move=False, align="left", font=("Arial", 8, "normal")) 

这里面主要有三个参数:
arg –object to be written to the TurtleScreen(文本内容)
move – True/False(画笔是否跟文字移动)
align – one of the strings “left”, “center” or right”(文本对齐方式)
font – a triple (fontname, fontsize, fonttype)(字体、字体大小以及是否加粗、斜体等等)
eg:

turtle.write('y',align="left",font=('Times New Roman',50))
(4)画点:
turtle.dot(size=None, *color) 

size—表示点的大小
color—点的颜色

(5)画笔的速度控制:

turtle.speed(speed=None) 

速度值:
“fastest”: 0
“fast”: 10
“normal”: 6
“slow”: 3
“slowest”: 1

(6)返回原点:

turtle.home()

用到的主要是以上的六个函数,源代码如下:

#turtle默认坐标轴位置
import turtle
turtle.setup(1.0,1.0)    #将画布设置成与电脑屏幕1:1的大小
#直角坐标系
turtle.speed(7)  #速度控制
turtle.dot(20,'red')
turtle.write('o',align='left',font=('Times New Roman',50))
turtle.pensize(3)
turtle.goto(700,0)
turtle.write('x',align='left',font=('Times New Roman',50))
turtle.goto(-700,0)
turtle.home()
turtle.goto(0,350)
turtle.write('y',align="left",font=('Times New Roman',50))
turtle.goto(0,-350)

3、美化直角坐标系:

大伙儿看到这样的坐标轴,是不是有点失望呢?不要急,来瞅瞅这一张效果图:
在这里插入图片描述

既然是一个坐标轴,就不能少了格子,对吧?所以,有了上图的效果,这样看起来心里是不是舒服些了呢?如果还是觉得有点后悔点开本博客的话,请继续看完,后文还有surprise!!!

首先,还是先来看看是怎么实现绘制方格:

(1)思考:

作为一名程序员,首先就得要有强大的思维能力,不能用“蛮力”去解决事情,如:一根一根直线的去画,这种虽然可行,但是,你有没有想过这样很费时间呢?更何况这是python语言,一门简洁利落的语言,经不起这么你折腾的。所以,我们在编写任何程序时,都要从最简便的方法去编写。

(2)使用循环语句:

那么该怎么解决这个问题呢?大家想一想,画这么多的直线,肯定是有规律的,对吧?既然有规律,就肯定可以使用循环语句喽!!!

(3)源代码:

在上述代码后面加入以下代码,即可轻松解决,请大伙儿仔细阅读:

#绘制网格
x=-675
y=325
turtle.speed(0)
turtle.pensize(1)
while True:
    turtle.penup()
    turtle.goto(x,350)
    turtle.pendown()
    turtle.goto(x,-350)
    x=x+25
    if x==700:
        break
while True:
    turtle.penup()
    turtle.goto(-700,y)
    turtle.pendown()
    turtle.goto(700,y)
    y=y-25
    if y==-350:
        break

任何程序语言,循环语句能够帮我们解决很多难题,能够让我们事半功倍!

4、surprise!!!

在看了网格后,大伙儿不难看出,画布中的各个点到这时候就很容易确认了,对吧?既然对画布中各个点能够得到确认,那还怕不会控制小乌龟(画笔)的行踪吗?
我相信,上述两段源代码,一定能帮助大家解决不少的问题(对于初学者来说,嘻嘻)
看看下面的效果图,就知道:
在这里插入图片描述

源代码如下:

在这里了解一个函数:

turtle.ht()

该函数的作用是隐藏小乌龟,即画笔,用来增加页面的美观,以后有机会,再做详细介绍。

小编由于时间原因,在此偷了点懒,直接使用了上篇博客绘制纸飞机的代码,请勿怪。

#对画笔进行初始化
turtle.speed(3)
turtle.pensize(3)
turtle.color('red','purple')
#绘制等腰直角三角形
turtle.begin_fill()
turtle.up()
turtle.goto(300,-50)
turtle.down()
turtle.dot(10,'blue')
turtle.write('(300,-50)',align='right', font=('楷体',15,'bold'))
turtle.goto(550,-50)
turtle.dot(10,'blue')
turtle.write('(550,-50)',align='left', font=('楷体',15,'bold'))
turtle.goto(550,-300)
turtle.dot(10,'blue')
turtle.write('(550,-300)',align='left', font=('楷体',15,'bold'))
turtle.goto(300,-50)
turtle.end_fill()
#太阳
turtle.color('red')
turtle.penup()
turtle.goto(550,225)
turtle.pendown()
turtle.begin_fill()
turtle.circle(50)
turtle.end_fill()
turtle.color('black','blue')
turtle.begin_fill()
#太阳圆心
turtle.up()
turtle.goto(550,275)
turtle.down()
turtle.color('black')
turtle.dot(10,'black')
turtle.write('(550,275)',align='left', font=('楷体',15,'bold'))
#飞机
turtle.penup()
turtle.home()
turtle.pendown()
turtle.pensize(5)
turtle.color("black","blue")
turtle.begin_fill()
turtle.goto(-300,150)
turtle.dot(15,'red')
turtle.write('(-300,150)',align='right', font=('楷体',15,'bold'))
turtle.goto(100,50)
turtle.dot(15,'red')
turtle.write('(100,50)',align='left', font=('楷体',15,'bold'))
turtle.goto(0,0)
turtle.end_fill()
turtle.goto(-30,-125)
turtle.goto(-50,-50)
turtle.begin_fill()
turtle.goto(-300,150)
turtle.goto(-125,-125)
turtle.dot(15,'red')
turtle.write('(-125,-125)',align='right', font=('楷体',15,'bold'))
turtle.goto(-50,-50)
turtle.goto(-30,-125)
turtle.goto(-85,-85)
turtle.end_fill()
#线条
turtle.pensize(3)
turtle.penup()
turtle.goto(75,25)
turtle.pendown()
turtle.goto(200,0)
turtle.penup()
turtle.goto(50,-5)
turtle.pendown()
turtle.goto(250,-30)
turtle.penup()
turtle.goto(10,-80)
turtle.pendown()
turtle.goto(100,-150)
turtle.penup()
turtle.goto(-80,-125)
turtle.pendown()
turtle.goto(120,-200)
turtle.ht()

看了以上源代码之后,大伙儿可以打开电脑中的IDLE,新建一个python文件,自己动手实际操作一下,同时,也欢迎大佬为我指出代码中的不足之处,谢谢!

发布了7 篇原创文章 · 获赞 187 · 访问量 7205

猜你喜欢

转载自blog.csdn.net/weixin_45082954/article/details/104547461