《Python语言程序设计》 课件 第9章 图形绘制_第1页
《Python语言程序设计》 课件 第9章 图形绘制_第2页
《Python语言程序设计》 课件 第9章 图形绘制_第3页
《Python语言程序设计》 课件 第9章 图形绘制_第4页
《Python语言程序设计》 课件 第9章 图形绘制_第5页
已阅读5页,还剩45页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章图形绘制第9章

图形绘制Tkinter概述画布绘图图形的事件处理图形绘制应用举例9.1Tkinter概述Tkinter是Python语言的标准GUI库,常被用于快速开发小型图形界面应用程序。9.1.2使用Tkinter创建GUI程序的步骤(1)导入Tkinter模块。importtkinter(导入tkinter模块)importtkinterastk(导入tkinter模块为tk)fromtkinterimport*(导入tkinter的所有内容)(2)建立主窗口。 root=tkinter.Tk()

(5)绑定事件处理程序响应用户操作(如单击按钮)引发的

事件。(6)进入事件循环,等待用户触发事件响应。root.mainiloop()(3)在主窗口中添加控件,如文本框、按钮等。(4)调用控件的pack()、grid()、place()方法,通过几何布局管理器调整并显示其位置和大小。9.1.3Tkinter的主窗口Tkinter的主窗口也被称为根窗体,是图形化应用程序的根容器,是Tkinter模块底层控件的实例。在导入Tkinter模块后,我们可以调用Tk()方法来初始化一个根窗体实例。window=Tk()例9-1

最简单的GUI程序示例。(1)在Python程序中导入Tkinter模块。(2)创建窗体对象。(3)启动消息循环。fromtkinterimport*

frm_main=Tk()

frm_main.mainloop()2.装饰界面属性说明举例title(str)窗口标题,str表示参数类型为字符串title(‘数据分析’〕iconbitmap(str)窗口左上角程序图标iconbitmap(".\\pic\\SUN.ICO")geometry(‘宽x高距左右边距上下边’)窗体的几何尺寸及在屏幕中的位置,其中x不能少,距左边用+右边用-,距上边用+下边用-geometry(‘800x500+100+50’)resizable(b,b)窗体尺寸的可变性,b表示逻辑型resizable(0,0)(高宽都不可变)9.1.4画布对象的创建画布(canvas)是用来绘制图形的区域,所有tkinter模块中的图形操作都是在画布上完成的。(1)创建一个画布对象画布对象名=Canvas(窗口对象名,属性名=属性值,...)画布对象的常用属性:高度(height)、宽度(width)、背景色(bg或background)等。c=Canvas(w,width=300,height=200,bg='white')(2)

显示画布对象c.pack()(3)

可对画布的属性进行设置c['bg']='green'9.1.5画布中的图形对象各种图形对象的共性操作1.图形对象的标识:采用标识号和标签(tag)标识号是在创建图形对象时自动为其赋予的唯一整数编号。为图形对象指定标签的三种方法:(1)在创建图形时,利用tags属性来指定标签。(2)创建图形之后,可以利用画布的itemconfig()方法对tags属性进行设置。(3)利用画布的addtag_withtag()方法来为图形对象添加新标签。例如:>>>id1=c.create_rectangle(10,10,100,50,tags="No1")>>>id2=c.create_rectangle(20,30,200,100,tags=("myRect","No2"))>>>c.itemconfig(id1,tags=("myRect","Rect1"))>>>c.addtag_withtag("ourRect","Rect1")注意:一个图形对象可以与多个标签相关联,同样一个标签可以与多个图形对象相关联。2.图形对象的共性操作(1)gettags()方法:用于获取给定图形对象的所有标签。(2)find_withtag()方法:用于获取与给定标签相关联的所有图形对象。(3)delete()方法:用于从画布上删除指定的图形对象。(4)move()方法:用于在画布上移动指定图形。>>>print(c.gettags(id1))('myRect','Rect1','ourRect')>>>print(c.find_withtag("Rect1"))>>>c.delete(id1)>>>c.move(id2,10,20)9.2画布绘图9.2.1绘制矩形方法:create_rectangle()

格式:r=画布对象名.create_rectangle(x0,y0,x1,y1,属性设置……)其中,(x0,y0)是矩形左上角的坐标,(x1,y1)是矩形右下角的坐标。属性设置即对矩形的属性进行设置。r保存图形的标识号。>>>r=c.create_rectangle(80,70,250,180,tags="Rect2")2.矩形对象的常用属性(1)矩形边框属性outline属性:通过outline属性可以设置矩形的边框颜色,默认值为黑色。width属性:通过width属性可以设置边框的宽度,默认值为1像素。dash属性:通过dash属性可以绘制边框成虚线形式,该属性的值是整数元组。例如二元组(a,b),其中a表示要画多少个像素,b表示要跳过多少个像素。(2)矩形内部填充属性fill属性:通过fill属性可以设置矩形内部区域的填充颜色,默认值为空字符串,即透明的效果。stipple属性:在填充颜色时,可以使用stipple属性设置填充画刷,即填充的点刻效果,可以取gray12、gray25、gray50、gray75等值。state属性:该属性用于设置图形的显示状态,默认值为NORMAL或normal,即正常显示。9.2.2绘制椭圆与圆弧1.绘制椭圆画布对象名.create_oval(x0,y0,x1,y1,属性设置……)例9-3绘制如图所示的圆和椭圆fromtkinterimport*w=Tk()w.title('绘制圆和椭圆')c=Canvas(w,width=260,height=260,bg='white')c.pack()c.create_oval(30,30,230,230,fill='black',width=2)c.create_oval(30,80,230,180,fill='green',width=2)c.create_oval(80,30,180,230,fill='white',width=2)2.绘制圆弧canvas.create_arc(x0,y0,x1,y1,属性设置...)属性start:定义弧形的开始位置,其值为一个角度(x轴方向为0º)。默认值为0º。属性extent:定义弧形的结束位置,其值表示从开始位置逆时针旋转的角度。默认值为90º。属性style用于规定圆弧的样式,可以取三种值:PIESLICE:扇形,即圆弧两端与圆心相连,默认值;ARC:弧,即圆周上的一段;CHORD:弓形,即弧加连接弧两端的弦。fromtkinterimport*w=Tk()c=Canvas(w,width=350,height=200,bg="white")c.pack()c.create_arc(20,40,100,120,width=2)#默认样式是PIESLICEc.create_arc(120,40,200,120,style=CHORD,width=2)c.create_arc(220,40,300,120,style=ARC,width=2)例子:9.2.3显示文本画布对象名.create_text(x,y,属性设置...)(x,y)指定文本显示的参考位置text属性:设置文本内容,其值即为要显示的字符串。anchor属性:用于指定文本的哪个锚点与显示位置(x,y)对齐。锚点可通过E(东)、S(南)、W(西)、N(北)、CENTER(中)、SE(东南)、SW(西南)、NW(西北)、NE(东北)等方位常量表示fill属性用于设置文本的颜色,默认值为黑色。justify属性用于控制多行文本的对齐方式,其值可以是LEFT、CENTER或RIGHT,默认为LEFT。font属性指定文本字体。例9-4

画布文本显示示例。fromtkinterimport*w=Tk()w.title('文本显示')c=Canvas(w,width=400,height=200,bg="white")c.pack()c.create_rectangle(200,100,201,101,width=8)c.create_text(200,100,text="HelloPython1",\font=("宋体",15,"normal"),anchor=SE)c.create_text(200,100,text="HelloPython2",\font=("宋体",15,"normal"),anchor=SW)c.create_text(200,100,text="HelloPython3",\font=("宋体",15,"normal"),anchor=NE)c.create_text(200,100,text="HelloPython4",\font=("宋体",15,"normal"),anchor=NW)9.3图形的事件处理“事件”(event)指在程序执行过程中发生的操作。例如单击鼠标左键、按下键盘上的某个键等。某个对象可以与特定事件绑定在一起,这样当特定事件发生时,可以调用特定的函数来处理该事件。1.事件绑定使用画布对象的bind()方法或者tag_bind()方法。例如:

c.bind("<Button-1>",canvasF)将画布对象与鼠标左键单击事件<Button-1>进行了绑定。c.tag_bind(t,"<Enter>",textF1)将画布上的文本对象t与鼠标指针进入事件<Enter>进行了绑定。2.事件处理函数

对象与特定事件进行绑定时,需告诉系统当对象发生了指定的事件后该如何处理的函数。例如:canvasF()函数用于处理画布上的鼠标左键单击事件。功能是改变文本t的内容,如果当前内容是"Python!"就变成"Programming!",如果当前是"Programming!"就变成"Python!"。3.主窗口事件循环语句:w.mainloop()作用:进入主窗口的事件循环。系统会自动监控在主窗口上发生的各种事件,并触发相应的处理函数。turtle(海龟)库是turtle绘图体系的Python实现

turtle绘图体系:1969年诞生,主要用于程序设计入门Python语言的标准库之一入门级的图形绘制函数库9.4turtle绘图turtle的原理turtle(海龟)是一种真实的存在有一只海龟,其实在窗体正中心,在画布上游走走过的轨迹形成了绘制的图形海龟由程序控制,可以变换颜色、改变宽度等turtle.setup()函数格式:turtle.setup(width,height,startx,starty)作用:设置主窗体的大小和位置。width:窗口宽度height:窗口高度startx:窗口左侧与屏幕左侧的像素距离starty:窗口顶部与屏幕顶部的像素距离>>>turtle.setup(650,350,200,200)turtle的魅力#PythonDraw.pyimportturtleturtle.setup(650,350,200,200)turtle.penup()turtle.fd(-250)turtle.pendown()turtle.pensize(25)turtle.pencolor("purple")turtle.seth(-40)foriinrange(4):turtle.circle(40,80)turtle.circle(-40,80)turtle.circle(40,80/2)turtle.fd(40)turtle.circle(16,180)turtle.fd(40*2/3)turtle.done()1.导入turtle模块使用turtle绘图,首先需要导入turtle模块,有以下两种方法。>>>importturtle>>>fromturtleimport*importturtle函数调用时使用的语句格式是turtle.circle(10)fromturtleimport*函数调用时使用的语句格式是circle(10)importturtleast函数调用时使用的语句格式是t.circle(10)0102032.turtle绘图属性

turtle绘图有三个要素,分别是位置、方向和画笔。(1)位置是指箭头在Turtle图形窗口中的位置。(2)方向是指箭头的指向,使用left(degree)、right(degree)函数使得箭头分别向左、向右旋转degree度。(3)画笔是指绘制的线条的颜色和宽度。9.4.2画笔控制函数1.turtle.penup()作用:抬起画笔,之后移动画笔不绘制形状。2.turtle.pendown()函数作用:落下画笔,之后移动画笔将绘制形状。3.turtle.pensize(width)函数作用:设置画笔宽度,当无参数输入时返回当前画笔宽度。turtle.pensize(25)4.turtle.pencolor(colorstring)函数或turtle.pencolor((r,g,b))

作用:设置画笔颜色,当无参数输入时返回当前画笔颜色。6.turtle.color(color1,color2)函数作用:同时设置pencolor=color1,fillcolor=color15.turtle.fillcolor(colorstring)函数作用:设置绘制图形的填充颜色7.turtle.begin_fill()函数8.turtle.end_fill()函数作用:准备开始填充图形作用:填充完成9.4.3形状绘制函数1.turtle.fd(distance)函数或turtle.forward(distance)作用:向小海龟当前行进方向前进distance距离;distance为负数时表示向相反方向前进。>>>turtle.fd(40)2.backward(d):与forward()函数相反,控制箭头向后移动,其中d代表移动的距离。forward(d)backward(d)3.goto(x,y):将箭头从当前位置径直移动到坐标为(x,y)的位置,移动后方向也不改变。如果想要移动箭头到(x,y)处理,但不要绘制图形,可以使用up()函数。例如,下列命令绘制一根水平直线。fromturtleimport*reset()#将整个绘图窗口清空并将箭头置于原点(窗口的中心)goto(100,0)#当前位置(0,0)运动到(100,0)位置importturtleturtle.goto(100,100)turtle.goto(100,-100)turtle.goto(-100,-100)turtle.goto(-100,100)turtle.goto(0,0)绝对角度4.turtle.seth(to_angle)函数或turtle.setheading(to_angle)作用:设置小海龟当前行进方向为to_angle,该角度是绝对方向角度值。只改变方向但不行进。

>>>turtle.seth(-40)turtle角度坐标体系turtle.seth(45)turtle.seth(-135)5.turtle.left(angle)函数作用:顺时针移动angle度。该角度为相对角度。只改变方向不移动。6.turtle.right(angle)函数作用:逆时针移动angle度。该角度为相对角度。只改变方向不移动。Turtle角度坐标体系importturtleturtle.left(45)turtle.fd(150)turtle.right(135)turtle.fd(300)turtle.left(135)turtle.fd(150)7.turtle.circle(radius,extent=None)函数作用:根据半径radius绘制extent角度的弧形。radius:弧形半径,当值为正数时,半径在小海龟左侧,

当值为负数时,半径在小海龟右侧。extent:绘制弧形的角度,当不设置参数或参数设置为None 时,绘制整个圆形。turtle.circle(100)turtle.circle(-100,90)例12-2绘制三个同心圆。程序如下:fromturtleimport*foriinrange(3):up()#提起画笔goto(0,-50-i*50)#确定画圆的起点down()#放下画笔circle(50+i*50)#画圆1、下列哪个选项能够使用turtle库绘制一个半圆形?(

)A.turtle.fd(100)B.turtle.circle(100)C.turtle.circle(100,90)D.turtle.circle(-100,180)2.turtle库中控制颜色的函数是(

)。A.pensize()B.pendown()C.goto()D.pencolor()DD3、

下列程序运行后,得到的图形是(

)。fromturtleimport*goto(100,100)A.水平直线B.垂直直线

C.斜线D.只移动坐标不做图4、turtle库中控制顺时针转的函数是()。A.pendown()B.left()C.right()D.pencolor()CC例12-1绘制一个正方形。程序如下:fromturtleimport*color("blue")#定义绘制时画笔的颜色pensize(5)#定义绘制时画笔的线条宽度speed(10)#定义绘图的速度foriinrange(4):#绘出正方形的四条边forward(100)right(90)使用turtle库,绘制一个正方形。请完成以下程序。importturtleastt.pensize(3)foriinrange(4):t.fd(100)_______t.left(90)使用turtle库,绘制一个叠边形,其中,叠边形内角为100度。请完成以下程序。importturtleastt.pensize(2)foriinrange(9):t.fd(180)_______t.right(80)使用turtle库,绘制一个六边形。请完成以下程序。importturtleastt.pensize(3)for________:t.fd(100)t.left(60)iinrange(6)使用turtle库,绘制一个边长为40像素的十二边形。请完成以下程序。importturtleturtle.pensize(2)d=0for______:turtle.fd(40)d+=30turtle.seth(d)iinrange(12)例

使用turtle库,绘制一个六瓣花。程序如下:fromturtleimport*x=50foriinrange(6):circle(x,240)left(60)例12-5使用turtle库绘制红色五角形。程序如下:fromturtleimport*pencolor("red")goto(-100,50)pendown()color("red")begin_fill()foriinrange(5): forward(200) right(144)end_fill()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论