Python | 您所在的位置:网站首页 › turtle画画结束语句 › Python |
全文目录
1. turtle 的坐标系1.1 画布在屏幕中的坐标系1.2 画笔在画布中的坐标系易错点
2. turtle 的画笔的体系2.1 画笔的命名2.2 画笔设置函数turtle.pensize(a)函数turtle.penup()函数turtle.pendown()函数turtle.hideturtle()turtle.showturtle()turtle.shape()和turtle.Turtle()write() 函数
2.3 颜色相关的设置(画布、画笔、图形填充)turtle.pencolor(color)turtle.color(color1, color2)turtle.fillcolor(color)turtle.begin_fill()turtle.end_fill()turtle.bgcolor(color)
易错点
3. turtle 的运动体系3.1 turtle 的相对方向3.2 turtle 的绝对方向3.3 相关函数turtle.goto(x, y)turtle.forward(a)turtle.backward(a)turtle.left(angle)turtle.circle(radius, extent =None, steps=None)turtle.setheading(angle)turtle.speed(a)turtle.dot(size=None, *color)turtle.home()
易错点
4. 其他函数turtle.rest()turtle.clear()turtle.clone()turtle.stamp()turtle.screensize(canvwidth, canvheight, bg)turtle.mainloop() 和 turtle.done()
练习参考资料
如果你认为Python 智能做那些冰冷冷的数据处理,那你就错了,Python 也可以做很多有趣的事情,比如同学们最喜欢的画画,Python 也非常“擅长”,它甚至可以绘制出一幅与众不同的画作。那Python 陛下的画作是什么样的呢? 让我们拭目以待吧! 海龟绘图很适合用来引导孩子学习编程。 最初来自于 Wally Feurzeig, Seymour Papert 和 Cynthia Solomon 于 1967 年所创造的 Logo 编程语言。 turtle 模块提供 面向对象 和 面向过程 2种形式的海龟绘图基本组件。由于它使用 tkinter 实现基本图形界面,因此需要安装了 Tk 支持的 Python 版本。 turtle(海龟)是Python内置的一个标准模块,它提供了绘制线、圆以及其它形状的函数,使用该模块可以创建图形窗口,在图形窗口中通过简单重复动作直观地绘制界面与图形。 turtle的使用主要分为以下三个方面: 创建窗口设置画布绘制图形 海龟运动画笔控制海龟状态使用事件特殊海龟方法… Screen 方法…窗口控制动画控制使用屏幕事件设置与特殊方法输入方法Screen 专有方法 1. turtle 的坐标系turtle 坐标系有两个:一个是 (窗口)画布 在整个计算机屏幕中的坐标系,另外一个是 画笔 在整个(窗口)画布中的坐标系。 1.1 画布在屏幕中的坐标系画布在计算机屏幕中的坐标系如下: 画布的(0,0) 坐标位于屏幕的左上方。 做小单位为像素。 setup()函数设置画布大小及位置,格式为: turtle.setup(width, height, startx=None, starty=None)参数功能如下: 参数使用小提示: setup()函数不是必须的,只有当需要改变画布大小或者坐标位置的时候使用;如果没有setup()函数,直接用turtle 进行绘图,画布默认的尺寸为800像素 * 600 像素, 并且位于计算机屏幕的中央。 setup()的4个参数,可以没有坐标信息,甚至可以连4个参数都没有。如果4个参数没有,则按照默认尺寸和位置进行设置; setup()前2个参数可以使用小于等于1.0的小数表示,代表的是画布的大小占整个计算机屏幕尺寸的比例。 比如 turtle.setup(1.0, 1.0)代表的是按照屏幕尺寸(宽和高)100%的比例进行设置,turtle.setup(0.5, 0.5)代表的是按照计算机屏幕尺寸的 50%比例缩小画布。 import turtle #创建一个宽度为800像素,高度为600像素,并且位于屏幕中心 turtle.setup(800,600) turtle.done() # mainloop 屏幕事件之主循环,防止窗口一闪而过 1.2 画笔在画布中的坐标系画笔在画布中的坐标系和画布在屏幕中的坐标系是不一样的,最大的不同是画布的正中是坐标系的原点(0,0),如下所示: 让小海龟走到指定的坐标,对应的命令是:turdle.goto(x,y),坐标的单位为像素。 易错点 (1)两个坐标系的原点位置不同,要注意在设置哪个坐标系。(2)setup() 不是必需 的,默认画布尺寸为800像素 * 600像素,而并非400像素 * 300像素。 2. turtle 的画笔的体系 2.1 画笔的命名在turtle 中可以有多支画笔, 但是每一支画笔都必须要有自己独有的名字,如果只有一支画笔,则不需要命名。 画笔命名函数:turtle.Pen(); 格式为 pen1 = turtle.Pen(), 前面的pen1 为画笔的名称。命名画笔后,该画笔的所有函数均需要在前面加上画笔名称,不能在使用默认的turtle 前缀。 2.2 画笔设置函数 turtle.pensize(a)函数turtle.width(width=None) 作用:设置画笔的粗细 参数 :width – 一个正数值, 代表画笔的像素数量 设置线条的粗细为 width 或返回该值。如果 resizemode 设为 “auto” 并且 turtleshape 为多边形,该多边形也以同样组细的线条绘制。如未指定参数,则返回当前的 pensize。 turtle.penup()函数作用:画笔抬起 – 移动时不画线。 特别说明:抬笔后,画笔的所有操作和移动都不会在画布上留下痕迹。 注意:turtle模块中为penup()和pendown()函数定义了别名,penup()函数的别名为pu(); pendown()函数的别名为pd()。 turtle.pendown()函数作用:画笔落下 – 移动时将画线。 特别说明:画笔落下后,才能绘制图形。 turtle.hideturtle()作用:隐藏小海龟,表示不显示小海龟 特别说明:隐藏并不影响小海龟绘图,即隐藏后小海龟还是可以绘图的。 turtle.showturtle()作用: 显示小海龟 turtle.shape()和turtle.Turtle()turtle.shape(name=None) 作用:设置小海龟的形状 参数 :name – 一个有效的形状名字符串。 设置海龟形状为 name 指定的形状名,如未指定形状名则返回当前的形状名。name 指定的形状名应存在于 TurtleScreen 的 shape 字典中。多边形的形状初始时有以下几种: “arrow”, “turtle”, “circle”, “square”, “triangle”, “classic”。 特别说明:默认小海龟的形状为“classic” ;参数作为字符串,所以必须加上引号,例如:turtle.shape("turtle") write() 函数turtle.write(arg, move=False, align='left', font=('Arial', 8, 'normal')) 作用:在小海龟当前位置书写文字 参数: arg – 要书写到 TurtleScreen 的对象move – True/Falsealign – 字符串 “left”, “center” 或 “right”font – 一个三元组 (fontname, fontsize, fonttype)基于 align (“left”, “center” 或 “right”) 并使用给定的字体将文本 —— arg 的字符串表示形式 —— 写到当前海龟位置。 如果 move 为真值,画笔会移至文本的右下角。 默认情况下 move 为 False。 from turtle import * import turtle turtle.setup(800, 600) # 设置(窗口)画布尺寸大小 turtle.bgcolor("white") # 设置画布背景为白色 turtle.write("Home = ", True, align="center") # 参数arg 为字符串 turtle.write((0, 0), True) # 参数arg 为元组 turtle.done() # 防止画布一闪而过效果如下: 作用:设置画笔的颜色 参数 color 有两种表示方式。 pencolor(colorstring) — 字符串形式,内容为颜色的英文,字母用小写,如“red”、“green”、“black”等等。pencolor((r, g, b)) — RGB三元组值形式,RGB是工业界的一种颜色标准,数值越大,该颜色越深,如 turtle.pencolor(255, 255, 255)代表的是白色 ,(0, 0, 0)是黑色。注意:在使用RGM三原色时,需要在程序前面声明 turtle.colorcode(255)将颜色设置成RGB模式。 turtle.color(color1, color2)作用:同时设置画笔及填充的颜色。 参数:第一个参数color1代表的是画笔的颜色,第二个参数color2 代表的是填充的颜色。 特别说明:如果只有一个参数,则代表该颜色既是画笔颜色也是填充颜色。参数color1 和 color2 都可以使用RGB表示。 turtle.fillcolor(color)作用 :设置填充颜色 参数:color 代表是填充颜色。 特别说明:填充颜色需要在开始填充前进行声明才有效。参数可以使用RGM模式表示。 turtle.begin_fill()作用:设置填充的起点,表示开始填充。 特别说明:开始填充和结束填充必须配对使用。 turtle.end_fill()作用:设置填充的终点,表示结束填充。 特别说明:结束填充和开始填充必须配对使用。 turtle.bgcolor(color)作用:设置画布的背景颜色。 特别说明:color 为背景颜色的文本名或RGM数值。 易错点 (1) 命名多支画笔时必须使用turtle.Pen() ,命名的格式为 a = turtle.Pen() 。这里P 要大写。(2) 所有的颜色设置,均可以用字符串和RGB 两种模式,但是在字符串模式下,颜色名称一定要加引号。(3) 所有的颜色设置也可以用RGB 值来表示。(4) turtle.begin_fill() 函数必须要在开始绘制需要填充的图形前就声明。(5) turtle.Turtle() 命令除了可以设置小海龟的形状外,还可以进行多支画笔的设置。示例代码: import turtle turtle.pensize(5) turtle.fillcolor("red") # 开始填充前声明填充颜色 turtle.begin_fill() turtle.color("yellow") # 设置画笔和填充颜色都是黄色 turtle.circle(50, steps=6) turtle.end_fill() turtle.hideturtle() turtle.done() # 防止画布一闪而过输出效果: 小海龟(画笔)在画布上是与方向的,默认的小海龟的头部(前方)为屏幕的右侧,尾部(后方)为屏幕的左侧,小海龟的左侧为屏幕的上方。 小海龟(画笔)的方向会随着画笔的方向改变而改变,所以,该方向为相对方向, 以小海龟的头部所朝向的前方为标准简历新的方向体系。 对应的函数有: turtle.forward(distance)turtle.backward(distance)turtle.circle(radius,extent=None,steps=None)turtle.left(angle)turtle.right(angle) 3.2 turtle 的绝对方向除了相对于小海龟头部方向的相对方向之外,turtle 还有绝对方向, 其特征如下。 (1) 绝对方向是不变的;(2)绝对方向的划分如图。屏幕的右方为 0°起点,也是360°终点;屏幕的上方为90°(逆时针)/-270°(顺时针);屏幕左侧为180°/-180°;屏幕下方为270° /-90°。(逆时针:右-上-左-下方向 0°、90°、180°、270°) 对应的函数有: turtle.setheading(angle) 设置朝向,但不前进 3.3 相关函数 turtle.goto(x, y)作用:让小海龟直线前进到指定坐标。 参数: (x, y)为目标位置的 x 坐标和y 坐标。 turtle.forward(a)作用:让小海龟 向前 移动a 个像素。 参数:a 代表的是移动的像素数。 turtle.backward(a)作用:让小海龟 向后 移动a 个像素。 参数:a 代表的是移动的像素个数。 turtle.left(angle)作用:让小海龟 向左 转 angle 角度。 参数:angle 代表旋转的角度。 特别说明: 参数为整数,代表 右转;为负数,代表左转。 turtle.circle(radius, extent =None, steps=None)作用:绘制圆或圆弧 参数: radius — 代表的是半径,这个参数必须有;extent — 代表的是弧度,如果没有给定参数,默认为360°;steps — 代表绘制圆或圆弧所需要的边的数量。特别说明: (1)turtle.circle()中的参数,半径参数为必需的给定,弧度和边数参数是可以选择设定。注意:如果确定了变数参数值,则有两种方法表示:turtle.circle(80, 360, 4) 或 turtle.circle(80, steps = 4)。(2)正多边形的绘制:turtle.circle()可以绘制正多边形,但是要注意:1.绘制正多边形时,turtle.circle()三个参数要完整,都要给定;2.正多边形的边长并不是半径也不是直径,如果不完整,需要按照语法格式补全参数。示例程序: import turtle turtle.color('red') # 设置画笔颜色和填充颜色都为红色 turtle.pensize(5) # 设置画笔为5个像素 turtle.circle(100, 360) # 画圆 turtle.penup() # 抬笔 不绘制线条 turtle.goto(200, 0)# 移动画笔到画布上此坐标 turtle.pendown() # 落笔 开始绘制 turtle.circle(100, 360, 6) # 绘制 正六边形 #turtle.circle(100, 360, steps=6) turtle.hideturtle() # 隐藏小海龟的形状 turtle.done() # 防止画布一闪而过输出效果: 作用:让小海龟转到指定的绝对角度,该函数和前面的 turtle.left(angle)以及turtle.right(angle)最大的不同在于,该函数指转到指定角度,与之前画笔所朝向的方向没有任何关系。 参数:angle 为必需有的参数,代表旋转的绝对角度,参数可以为负数。 特别说明:turtle.setheading()可以简写为 `turtle.seth()。 turtle.speed(a)作用:设定画笔的运动速度。 参数:a 的数值范围是 0~10 ,数字越大,速度越快,但是最快的是0 而不是10,因为当参数为0 时,turtle 绘图不需要动画。 turtle.dot(size=None, *color)作用:绘制一个直径为size ,颜色为 color 的圆点。 参数: size — 一个整型数 >= 1 (如果指定);若size 未指定,则直径取pensize+4 和 2* pensize中较大值。color — 一个颜色字符串或者RGB颜色数值元组特别说明: a 为圆点的直径,单位为像素。 turtle.home()作用: 让小海龟返回原点 特别说明: 小海龟返回原点(0, 0)后,方向为初始方向,即屏幕的右方,但是画笔的颜色等设置依然保留。 易错点-(1)turtle.dot()的参数为直径,而turtle.circle()的参数为半径。 -(2)turtle.seth()的参数为绝对角度,而turtle.left() 和 turtle.right()的参数为相对角度。 -(3)turtle.speed() 的参数范围为0~10 ,最快的是 0 ,最慢的是1 。 4. 其他函数 turtle.rest()作用:清空画布,并且重置turtle 状态为初始状态 turtle.clear()作用:清空turtle 窗口,但是turtle 的位置和状态不会改变。 注意:turtle.rest() 和 turtle.clear() 有着本质的区别:前者是完全初始化,画笔的所有设置均恢复到初始状态,但不包括画布的设置(比如画布的大小、画布的背景颜色等);而后者只轻触画布上的图案,并不改变画笔的设置和位置。 turtle.clone()作用:创建并返回一个 turtle 的克隆体,该克隆体与 turtle 具有相同的属性。 turtle.stamp()作用:印章,将小海龟的形状或者绘制的形状作为印章复制到屏幕上,和Scratch中的的印章作用一致。 turtle.screensize(canvwidth, canvheight, bg)作用:设定画布的尺寸和背景颜色。 参数:一共有3个,前面两个参数设置画布的宽度和高度,第三个参数设定背景颜色。 说明:如果没有参数,则返回当前窗口的宽度和高度。 turtle.mainloop() 和 turtle.done()作用: 停止画笔绘制,但是窗口不会关闭。由于这是用来停止画笔的,所以必须用在程序的中的最后一个语句。 示例程序: import turtle turtle.shape("square") turtle.home() # 返回原点 turtle.dot() # 画点 turtle.stamp() # 印章 turtle.forward(100) turtle.setheading(90) # 设置朝向 turtle.stamp() turtle.forward(100) turtle.left(90) turtle.stamp() turtle.forward(100) turtle.left(90) turtle.stamp() turtle.forward(100) turtle.done() # 防止画布一闪而过输出效果: 绘制下图。 (1)画一个有两个直角三角形组成的正方形,边长为180像素。 (2)左上三角形填充为黄色,右下三角形填充为红色。 (3)设置笔画移动速度为1,线条颜色为黑色。 (4)画图结束,隐藏并停止画笔。 示例程序: import turtle turtle.speed(1) turtle.color('black', 'red') # 设置画笔为黑色,填充颜色为红色 # turtle.fillcolor('red') turtle.begin_fill() # 开始填充 turtle.right(90) turtle.forward(180) turtle.right(90) turtle.forward(180) turtle.goto(0, 0) turtle.end_fill() # 结束填充 turtle.color("black", "yellow") turtle.begin_fill() turtle.setheading(0) # 绝对方向 0°, 电脑屏幕正右方 turtle.backward(180) turtle.right(90) turtle.forward(180) turtle.goto(0, 0) turtle.end_fill() turtle.hideturtle() # 隐藏画笔/海龟 turtle.done() # 防止画布一闪而过输出效果: |
CopyRight 2018-2019 实验室设备网 版权所有 |