美文网首页
python Turtle库

python Turtle库

作者: 小董不太懂 | 来源:发表于2019-08-29 12:20 被阅读0次

Turtle库是Python的绘图函数库.因名思义,Turtle小乌龟,慢慢爬,爬出轨迹,一步一个脚印,这个小乌龟有很多功能,如控制爬行速度,颜色填充,运动方向,角度等。

  • 导入库
from turtle import * 
  • 画布(convas)
    画布即绘图区,有尺寸,背景色,初始位置属性。
序号 方法 描述
1 screensize(canvwidth=None, canvheight=None, bg=None) canvwidth画布宽度,canvheight画布高度,bg画布背景色,默认(400, 300)白色背景
2 setup(width, height) width和height为整数时,表示像素,为小数时表示占屏幕比例
3 setup(startx, starty) 画布左上角的坐标,为空时,画布在屏幕中央,画布对角线交点为原点(0,0)
4 setup(width, height, startx, starty) 画布大小及初始位置

**常用的几个方法,写在下边**

import turtle
turtle.screensize(500,1000,'green')#宽度,高度,背景色
import turtle
turtle.setup(500,400,200,200)
#输入宽和高为整数时, 表示像素; 为小数时, 表示占据电脑屏幕的比例。(startx, starty): 这一坐标表示 矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。
turtle.bgcolor('yellow')#背景颜色填充
  • 画笔(pen)
    画笔有颜色,宽度及运动速度的属性.
序号 方法 描述
1 pensize() 画笔宽度
2 pencolor() 画笔颜色,颜色字符串"red",“green”, "blue"或者RGB元组(255, 255, 255)
3 speed() 画笔运动速度
  • 画笔绘图
序号 方法 描述
1 forward(distance)=fd(distance) 画笔移动distance像素长度
2 backward(distance)=bk(distance)=back(distance) 画笔反方向移动distance像素长度
3 right(degree)=rt(angle) 顺时针移动的度数
4 left(degree)=lt(angle) 逆时针移动的度数
5 pendown() 移动时绘制图形,默认绘制
6 goto(x, y) 画笔移动到坐标(x, y)的位置
7 penup() 提起画笔,移动到指定位置,不绘制曲线
8 circle(radius, extent=None, steps=None) 绘制圆,radius为半径,extent为弧度,steps为内切多边形边数,半径为正,逆时针绘制圆;半径为负,顺时针绘制圆;
9 setx() x轴移动到指定位置
10 sety() y轴移动到指定位置
11 setheading(angle)=seth(angle) 设置画笔的朝向为angle角度
12 home() 设置当前画笔位置为原点,画笔朝向东
13 dot( r ) 绘制一个指定指定和颜色的原点
14 fillcolor(colorstring) 绘制图形填充颜色
15 color(color1, color2) color1为画笔颜色,color2为填充颜色
16 filling() 返回是否在填充状态
17 begin_fill() 开始填充
18 end_fill() 结束填充
19 hideturtle() 隐藏画笔turtle形状
20 showturtle() 显示画笔turtle形状
  • 画笔功能操作
序号 方法 描述
1 clear() 清空turtle窗口,保持turtle位置和状态
2 reset() 重置turtle窗口
3 undo() 撤销上一个turtle动作
4 isvisible() 返回当前turtle是否可见
5 stamp() 复制当前图像
6 write(s[, font=(“font-name”, font_size, “font_type”)]) 写文本,s为文本内容,font是字体参数,分别为字体名称,大小和类型,为可选项
7 mainloop(), done() 启动事件循环,解决一闪而过,必须是程序最后一句
8 mode(mode=None) 画笔模式standard,log和world模式,初始画笔standard逆时针向右(东);初始画笔logo顺时针向上(北)
9 delay(delay=None) 延迟绘图时间,单位是毫秒
10 begin_poly() 开始记录多边形顶点,当前画笔位置是多边形的第一个顶点
11 end_poly() 停止记录多边形的顶点,当前画笔位置是多边形最后一个顶点,与第一个顶点相连
12 get_ploy() 返回最后记录的多边形

习题练习

  • 绘制五角星,外框为黄色,填充为红色,要求必须根正苗红,始终跟党走
import turtle
turtle.screensize(800,800,'black')
turtle.fillcolor('red')
turtle.goto(-200,0)
turtle.pendown()
turtle.begin_fill()
turtle.pencolor('yellow')
turtle.pensize(10)
for i in range(5):
        turtle.fd(400)
        turtle.right(144)
turtle.end_fill()
turtle.penup()
输出结果为:

结合random()函数绘制一个雪景图,“雪景”图形艺术背景为黑色,分为上下两个区域,上方是漫天彩色雪花,下方是由远及近的灰色横线渐变。该图运用了随机元素,如雪花位置、颜色、大小、花瓣数目、地面灰色线条长度、线条位置等,需要使用turtle库和random库。

绘制分为三个步骤

    1. 构建图的背景
    1. 绘制雪花效果
    1. 绘制雪地效果

第一步,构建图的背景
设定窗体大小为800x600像素,窗体颜色为black。然后,定义上方雪花绘制函数drawSnow()和下方雪地绘制函数drawGround()。

def main():
        drawSnow()
        drawGround()
        
if __name__ == '__main__':
        main()

第二步,绘制雪花效果。
为体现艺术效果,drawSnow()函数首先隐藏turtle画笔、设置画笔大小、绘制速度,然后使用for循环绘制100朵雪花。雪花大小snowsize、雪花花瓣数dens都分别设定为一定数值范围随机数。最后通过for循环绘制出多彩雪花。

import random
import turtle

turtle.screensize(1000,1000,'black')

def drawSnow():
        turtle.hideturtle()
        turtle.pensize(2)
        turtle.Turtle().screen.delay(0)
        for i in range(300):
                r,g,b = random.random(),random.random(),random.random()
                turtle.pencolor(r,g,b)
                turtle.penup()
                turtle.setx(random.randint(-480,480))
                turtle.sety(random.randint(-100,480))
                dens = random.randint(6,8)
                snowsize = random.randint(10,14)
                turtle.pendown()
                for j in range(dens):       
                        turtle.fd(snowsize)
                        turtle.bk(snowsize)
                        turtle.right(360/dens)
                   
def main():
        drawSnow()
        drawGround()
        
if __name__ == '__main__':
        main()

第三步,绘制雪地效果。drawGround()函数使用for循环绘制地面400个
小横线,画笔大小pensize、位置坐标x、y、线段长度均通过randint()函数作为随机数产生。

 def drawGround():
        turtle.penup()
        turtle.hideturtle()
        turtle.pensize(10)
        for i in range(900):
                r,g,b = random.random(),random.random(),random.random()
                turtle.pencolor(r,g,b)
                x = random.randint(-480,480)
                y = random.randint(-480,-160)
                turtle.goto(x,y)
                turtle.pendown()
                turtle.fd(random.randint(10,14))
                turtle.penup()

完整程序为:

import random
import turtle

turtle.screensize(1000,1000,'black')

def drawSnow():
        turtle.hideturtle()
        turtle.pensize(2)
        turtle.Turtle().screen.delay(0)
        for i in range(500):
                r,g,b = random.random(),random.random(),random.random()
                turtle.pencolor(r,g,b)
                turtle.penup()
                turtle.setx(random.randint(-480,480))
                turtle.sety(random.randint(-100,480))
                dens = random.randint(6,8)
                snowsize = random.randint(10,14)
                turtle.pendown()
                for j in range(dens):       
                        turtle.fd(snowsize)
                        turtle.bk(snowsize)
                        turtle.right(360/dens)
                        
def drawGround():
        turtle.penup()
        turtle.hideturtle()
        turtle.pensize(10)
        for i in range(900):
                r,g,b = random.random(),random.random(),random.random()
                turtle.pencolor(r,g,b)
                x = random.randint(-480,480)
                y = random.randint(-480,-160)
                turtle.goto(x,y)
                turtle.pendown()
                turtle.fd(random.randint(10,14))
                turtle.penup()
                

def main():
        drawSnow()
        drawGround()
        
if __name__ == '__main__':
        main()
输出效果:

相关文章

网友评论

      本文标题:python Turtle库

      本文链接:https://www.haomeiwen.com/subject/dpebectx.html