(高职)8.3 turtle模块ppt课件.pptx
8.3 turtle模块PYTHON PYTHON 程序设计程序设计丁辉丁辉 商俊燕商俊燕 范晓玲范晓玲第八章第八章 图形用户界面设计图形用户界面设计u8.1 8.1 常用常用GUIGUI模块简介模块简介u8.2 tkinter8.2 tkinter模块模块u8.3 turtle8.3 turtle模块模块u8.4 8.4 图形用户界面设计精选案例图形用户界面设计精选案例u小结小结2022年5月12日32022年5月12日4 turtle也是Python内置的模块,是一个直观有趣的图形绘制函数库,turtle是海龟的意思。程序设计中有时候需要绘制相应的图形来展示信息或者表达某种意义。8.3 turtle模块l绘图窗口设置(1)设置turtle绘图区域turtle.screensize(canvwidth=None, canvheight=None, bg=None)canvwidth:画布的宽度,默认为800像素;canvheight:画布的高度,默认为800像素;bg:画布背景色。如:turtle.screensize(400, 400, yellow) 表示设置画布为400 x400,黄色底纹。(2)设置turtle绘图窗口大小和位置turtle.setup(width, height, startx=None, starty=None)width:窗口的宽度,为整数时, 表示像素; 为小数时, 表示窗口宽度与屏幕的比例;height: 窗口的高度,为整数时, 表示像素; 为小数时, 表示窗口高度与屏幕的比例;(startx, starty): 这一坐标表示矩形窗口左上角顶点的位置, 如果为空,则窗口位于屏幕中心。如:turtle.setup(0.5,0.5,100,100) 表示绘图窗口宽和高为整个屏幕的一半,窗口左上角距屏幕左上角的坐标都为100。2022年5月12日5l画笔设置 绘图窗口设置好后,画笔笔尖位于窗口的中心,即默认的坐标原点(0 0,0 0)。X轴正方向为向右,Y轴正方向为向上,X轴正方向为00(3600),逆时针旋转角度增大,顺时针旋转角度减小,即Y轴正方向为900(-2700),X轴负方向为1800(-1800),Y轴负方向为2700(-900)。对于画笔可设置三个属性,分别是颜色、画线的宽度和画线的速度。 (1)turtle.pensize():设置画笔的宽度,单位为像素; (2)turtle.pencolor():没有参数传入时,返回当前画笔颜色,传入参数设置画笔颜色时,可以是字符串如“green”, “red”,也可以是RGB 3元组所对应的颜色编号,每一种颜色编号值为0,255,如“#594839”。 (3)turtle.speed(speed):设置画笔移动速度,画笔绘制的速度范围0,10整数,数字越大越快。8.3 turtle模块2022年5月12日6l绘图函数控制海龟绘图有着许多的函数,这些函数分为运动函数、画笔控制函数、全局控制函数。函 数说 明turtle.forward(distance)向当前画笔方向移动distance像素长度turtle.backward(distance)向当前画笔相反方向移动distance像素长度turtle.right(degree)顺时针移动degreeturtle.left(degree)逆时针移动degreeturtle.pendown()放下画笔turtle.goto(x,y)将画笔移动到坐标为x,y的位置turtle.penup()提起画笔turtle.circle(radius,extent=None)画一个以radius为半径,以extent为角度的圆弧,省略extent则画一个圆turtle.setx(x)从当前位置沿X轴移动到距离Y轴x像素turtle.sety(x)从当前位置沿Y轴移动到距离X轴x像素turtle.setheading(angle)设置画笔当前朝向为angle角度turtle.home()使画笔回到原点(0,0)turtle.dot(r)绘制一个指定直径和颜色的圆点运动函数8.3 turtle模块2022年5月12日7l绘图函数画笔控制函数画笔控制函数函 数说 明turtle.fillcolor(colorstring)turtle.fillcolor(colorstring)设置所绘图形的填充颜色turtle.color(color1, color2)turtle.color(color1, color2)同时设置同时设置pencolor=color1, fillcolor=color2pencolor=color1, fillcolor=color2turtle.filling()turtle.filling()返回当前是否在填充状态turtle.begin_fill()turtle.begin_fill()准备开始填充图形准备开始填充图形turtle.end_fill()turtle.end_fill()填充完成turtle.hideturtle()turtle.hideturtle()隐藏画笔的隐藏画笔的turtleturtle形状形状turtle.showturtle()turtle.showturtle()显示画笔的turtleturtle形状全局控制函数全局控制函数命令说 明turtle.clear()turtle.clear()清空turtleturtle窗口,但是turtleturtle的位置和状态不会改变turtle.reset()turtle.reset()清空窗口,重置清空窗口,重置turtleturtle状态为起始状态状态为起始状态turtle.undo()turtle.undo()撤销上一个turtleturtle动作turtle.isvisible()turtle.isvisible()返回当前返回当前turtleturtle是否可见是否可见turtle.stamp()turtle.stamp()复制当前图形turtle.write(s ,font=(font-turtle.write(s ,font=(font-name,font_size,font_type)name,font_size,font_type)写文本,写文本,s s为文本内容,为文本内容,fontfont是字体的参数,分别为是字体的参数,分别为字体名称,大小和类型;字体名称,大小和类型;fontfont为可选项,为可选项,fontfont参数也参数也是可选项是可选项turtle.mainloop()turtle.mainloop()或turtle.done()turtle.done()启动事件循环,必须是turtleturtle图形程序中的最后一个语句8.3 turtle模块2022年5月12日8l应用示例【例8-7】用turtle库绘制右图。(1)从画笔的初始位置(正方形的左下角)开始,画边长为100的正方形。使用turtle.forward(distance)函数,画线的方向由turtle.setheading(angle)函数控制,每画完一个边,逆时针转900。(2)移动画笔到正方形下边的中点,画半径为50的圆。使用turtle.circle(radius,extent)函数,当省略extent参数时,表示沿逆时针方向画半径为radius的圆。import turtle#设置绘图窗口turtle.setup(400,400)#设置画笔turtle.pensize(3)turtle.color(red,yellow)#开始填充turtle.begin_fill()#画边长为100的正方形for i in range(4): turtle.forward(100) #逆时针转90度 turtle.setheading(i+1)*90)#画半径为50的内接圆turtle.setx(50)turtle.circle(50)#填充结束turtle.end_fill()turtle.mainloop()如何画一个外接圆8.3 turtle模块2022年5月12日9l应用示例【例8-8】请编程输出右图。import turtle import time#设置画布,背景为灰色turtle.screensize(500,500,bg=gray) turtle.pensize(5) turtle.pencolor(yellow) turtle.fillcolor(red) #开始画图 turtle.begin_fill() for i in range(5): #每边长200 turtle.forward(200) #顺时针转144度 turtle.right(144) turtle.end_fill()#延时2秒time.sleep(2) #抬起笔 turtle.penup()#移动到文本显示的位置turtle.goto(50,-180) turtle.color(yellow)#显示文本,字体为Arial,字号30,正常字形turtle.write(五角星, font=(Arial, 30, normal) turtle.mainloop()(1)五角星的画法。五角星的每个角是360,画笔从起点开始,向前画200的直线,到达第一个转折点,右转(顺时针)1440,再向前画200的直线,不断重复右转1440和向前画200的直线,一共5次,即完成五角星的绘制。(2)文本的绘制。使用turtle.write(s ,font=(font-name,font_size,font_type),s是要绘制的字符串,font参数部分是字符的字体、字号和字形,本例采用的是Arial字体,字号为30,字形是normal。如果将顺时针转的角度改为1350,循环次数改为range(12),会是一个几角星?8.3 turtle模块2022年5月12日10