Python语言程序设计第12章-图形绘制-配源代码课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Python语言程序设计第12章-图形绘制-配源代码课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python 语言程序设计 12 图形 绘制 源代码 课件
- 资源描述:
-
1、 Python语言程序设计语言程序设计刘刘卫国卫国第第12章章 图形图形绘制绘制配源代码配源代码12.1.1 tkinter模块模块导导入入tkinter模块一般采用以下两种方法。模块一般采用以下两种方法。 import tkinter from tkinter import *12.1 Tkinter图形库概述图形库概述12.1.2 主窗口的主窗口的创建创建主主窗口也称为根窗口,这是一个顶层窗口,窗口也称为根窗口,这是一个顶层窗口,所有图形都是在这个窗口中绘制的。其创建格所有图形都是在这个窗口中绘制的。其创建格式为:式为:窗口窗口对象名对象名=Tk()例如例如,下列语句创建主窗口,下列语句创
2、建主窗口w。 w=Tk()12.1.3 画布对象的创建画布对象的创建画布画布(canvas)就是用来进行绘图的区域,)就是用来进行绘图的区域,实际上是一个对象,可以在画布上绘制各种图形、实际上是一个对象,可以在画布上绘制各种图形、标注文本。创建画布对象语句的格式如下:标注文本。创建画布对象语句的格式如下:画布对象名画布对象名=Canvas(窗口对象名窗口对象名,属性名属性名=属性属性值值,)该该语句创建一个画布对象,并对该对象的属语句创建一个画布对象,并对该对象的属性进行设置。语句中的性进行设置。语句中的Canvas代表代表tkinter模块模块提供的提供的Canvas类,通过类,通过Canv
3、as类的构造函数类的构造函数Canvas()创建画布对象。创建画布对象。“窗口对象名窗口对象名”表示画表示画布所在的布所在的窗口,窗口,“属性名属性名=属性值属性值”用于设置画用于设置画布对象的布对象的属性。属性。下面的语句在主窗口下面的语句在主窗口w中创建一个宽度为中创建一个宽度为300像素、高度为像素、高度为200像素、背景为白色的画布像素、背景为白色的画布对象,并将画布对象命名为对象,并将画布对象命名为c。 c=Canvas(w,width=300,height=200,bg=white)注意,虽然已经创建了画布对象注意,虽然已经创建了画布对象c,但在主,但在主窗口中并没有看到这块白色画
4、布。为了让画布在窗口中并没有看到这块白色画布。为了让画布在窗口中显现出来,还需要执行如下语句。窗口中显现出来,还需要执行如下语句。 c.pack()其中其中c表示画布对象,表示画布对象,pack()是是画布对象的画布对象的一个方法,这时在屏幕上看到原来的一个方法,这时在屏幕上看到原来的主窗口中放主窗口中放进一个进一个300200的白色画布。的白色画布。12.1.4 画布对象的画布对象的坐标系坐标系tkinter模块为画布建立了坐标系。画布坐模块为画布建立了坐标系。画布坐标系以画布左上角为原点,从原点水平向右为标系以画布左上角为原点,从原点水平向右为x轴,从原点垂直向下为轴,从原点垂直向下为y轴
5、。轴。画布坐标系画布坐标系12.1.5 画布中的图形对象画布中的图形对象1图形对象的标识图形对象的标识画布中的图形对象需要采用某种方法来标识画布中的图形对象需要采用某种方法来标识和引用,以便对该图形对象进行处理,具体采用和引用,以便对该图形对象进行处理,具体采用标识号和标签(标识号和标签(tag)两种标识方法。)两种标识方法。标识号是创建图形对象时自动为图形对象赋标识号是创建图形对象时自动为图形对象赋予的唯一的整数编号。标签相当于给图形对象命予的唯一的整数编号。标签相当于给图形对象命名,一个图形对象可以与多个标签相关联,而同名,一个图形对象可以与多个标签相关联,而同一个标签可以与多个图形对象相
6、关联,一个标签可以与多个图形对象相关联,即一个图即一个图形对象可以有多个名字,而且不同形对象可以有多个名字,而且不同图形对象可以图形对象可以有相同的名字。有相同的名字。为图形对象指定标签有三种方法。为图形对象指定标签有三种方法。(1)在创建图形时利用)在创建图形时利用tags属性来指定标签,属性来指定标签,可以将可以将tags属性设置为单个字符串,即单个名属性设置为单个字符串,即单个名字,也可以设置为一个字符串元组,即多个名字,也可以设置为一个字符串元组,即多个名字。字。(2)在创建图形之后,可以利用画布的)在创建图形之后,可以利用画布的itemconfig()方法对方法对tags属性进行设置
7、。属性进行设置。(3)利用画布的)利用画布的addtag_withtag()方法来为图方法来为图形对象添加新标签。形对象添加新标签。2图形对象的共性操作图形对象的共性操作(1)gettags()方法:用于获取给定图形对象的方法:用于获取给定图形对象的所有标签。所有标签。(2)find_withtag()方法:用于获取与给定标签方法:用于获取与给定标签相关联的所有图形对象。相关联的所有图形对象。(3)delete()方法:用于从画布上删除指定的方法:用于从画布上删除指定的图形对象。图形对象。(4)move()方法:用于在画布上移动方法:用于在画布上移动指定图形。指定图形。绘制绘制图形前,先要导入
8、图形前,先要导入tkinter模块、创建主模块、创建主窗口、创建画布并使画布可见。相关的语句汇总窗口、创建画布并使画布可见。相关的语句汇总如下。如下。from tkinter import *w=Tk()c=Canvas(w,width=300,height=200,bg=white)c.pack()12.2 画布绘图画布绘图12.2.1 绘制矩形绘制矩形1create_rectangle()方法方法画布画布对象提供对象提供create_rectangle()方法,用方法,用于在画布上创建矩形,其调用格式如下:于在画布上创建矩形,其调用格式如下:画布对象名画布对象名.create_rectan
9、gle(x0,y0,x1,y1,属属性设置性设置)其中其中,(,(x0,y0)是矩形左上角的坐标,)是矩形左上角的坐标,(x1,y1)是矩形右下角的坐标。属性设置即对矩是矩形右下角的坐标。属性设置即对矩形的属性进行设置。形的属性进行设置。例如,下面的语句创建一个以(例如,下面的语句创建一个以(50,50)为左)为左上角、以(上角、以(200,100)为右下角的矩形。)为右下角的矩形。 c.create_rectangle(50,30,200,150)下面的语句再创建一个矩形,并将矩形标识号下面的语句再创建一个矩形,并将矩形标识号存入变量存入变量r中。中。 r=c.create_rectangl
10、e(80,70,250,180,tags=Rect2) r22矩形对象的常用属性矩形对象的常用属性(1)矩形边框属性)矩形边框属性outline属性。矩形边框可以用属性。矩形边框可以用outline属性来属性来设置颜色,其默认值为黑色。如果将设置颜色,其默认值为黑色。如果将outline设设置为空串,则不显示边框,即透明的边框。置为空串,则不显示边框,即透明的边框。width属性。边框的宽度可以用属性。边框的宽度可以用width属性来属性来设置,默认值为设置,默认值为1像素。像素。dash属性。边框可以画成虚线形式,这需要属性。边框可以画成虚线形式,这需要用到用到dash属性,该属性的值是整数
11、元组。属性,该属性的值是整数元组。最常最常用用的是二元组的是二元组(a,b),其中,其中a指定要画指定要画多少个像素,多少个像素,b指定要跳过多少个像素,如此重复,指定要跳过多少个像素,如此重复,直至边框直至边框画画完。若完。若a、b相等,可以简记为(相等,可以简记为(a,)。)。(2)矩形内部填充属性)矩形内部填充属性fill属性。矩形内部区域可以用属性。矩形内部区域可以用fill属性来设置属性来设置填充颜色,此属性的默认值是空串,效果是内部填充颜色,此属性的默认值是空串,效果是内部透明。透明。stipple属性。在填充颜色时,可以使用属性。在填充颜色时,可以使用stipple属性设置填充画
12、刷,即填充的点刻效果,属性设置填充画刷,即填充的点刻效果,可以取可以取gray12、gray25、gray50、gray75等值。等值。(3)其他属性)其他属性矩形还有个属性矩形还有个属性state,用于设置图形的显,用于设置图形的显示状态。默认值是示状态。默认值是NORMAL或或normal,即正常,即正常显示。另一个有用的值是显示。另一个有用的值是HIDDEN或或hidden,它使矩形在画布上不可见。使一个图形在它使矩形在画布上不可见。使一个图形在NORMAL和和HIDDEN两个状态之间交替变化,两个状态之间交替变化,即形成闪烁的效果。注意,属性值用大写字母即形成闪烁的效果。注意,属性值用
13、大写字母形式时,不要加引号,而用小写字母形式时,形式时,不要加引号,而用小写字母形式时,一定要加引号,下面还有这种情况,一定要加引号,下面还有这种情况,到时只列到时只列出出大写字母形式。大写字母形式。例例12-1 绘制图绘制图12-7所示的四个正方形所示的四个正方形。图图12-7 绘制四个绘制四个正方形正方形分析分析:利用画布的:利用画布的create_rectangle()方法绘方法绘制制正方形,注意设置属性和四个正方形正方形,注意设置属性和四个正方形之间的之间的位位置关系。置关系。tcost)3(sintytsint)3(costx例例12-2 绘制曲线绘制曲线分析分析:绘制函数曲线可采用
14、计算出函数曲线的各个点的:绘制函数曲线可采用计算出函数曲线的各个点的坐标,将各点画出来,如果这些点足够密,坐标,将各点画出来,如果这些点足够密,绘出的曲线会绘出的曲线会比较光滑。画布对角没有提供画比较光滑。画布对角没有提供画“点点”的方法,但可以画的方法,但可以画一个很小的矩形来当作点。一个很小的矩形来当作点。,t0,10。12.2.2 绘制椭圆与圆弧绘制椭圆与圆弧1绘制椭圆绘制椭圆画布画布对象提供对象提供create_oval()方法,用于在画布上方法,用于在画布上画一个椭圆,其特例是圆。椭圆的位置和尺寸通过其外画一个椭圆,其特例是圆。椭圆的位置和尺寸通过其外接矩形决定,而外接矩形由左上角坐
15、标(接矩形决定,而外接矩形由左上角坐标(x0,y0)和右)和右下角坐标(下角坐标(x1,y1)定义)定义。create_oval()方法的调用格式如下:方法的调用格式如下:画布对象名画布对象名.create_oval(x0,y0,x1,y1,属性属性设置设置)create_oval()的返回值是所创建椭圆的标的返回值是所创建椭圆的标识号,可以将标识号存入变量。识号,可以将标识号存入变量。和矩形类似,椭圆的常用属性包括和矩形类似,椭圆的常用属性包括outline、width、dash、fill、state和和tags等。画布对等。画布对象的象的itemconfig()方法、方法、delete()
16、方法和方法和move()方法同样可用于椭圆的属性设置、删除和移动方法同样可用于椭圆的属性设置、删除和移动。例例12-3 创建图创建图12-10所示的圆和椭圆。所示的圆和椭圆。图图12-10 绘制圆和椭圆绘制圆和椭圆分析:利用画布的分析:利用画布的create_oval方法绘制方法绘制一个圆一个圆和两个椭圆,注意设置属性和三个图形和两个椭圆,注意设置属性和三个图形之间的之间的位置关系。位置关系。例例12-4 描绘地球绕太阳旋转的轨道。描绘地球绕太阳旋转的轨道。分析:分别创建一个椭圆和两个圆,并且为大圆分析:分别创建一个椭圆和两个圆,并且为大圆形涂上红色表示太阳,为小圆形涂上蓝色表示地形涂上红色表
17、示太阳,为小圆形涂上蓝色表示地球球。2绘制圆弧绘制圆弧画布对象提供画布对象提供create_arc()方法,用于在方法,用于在画布上创建一个弧形。与椭圆的绘制类似,画布上创建一个弧形。与椭圆的绘制类似,create_arc()的参数是用来定义一个矩形的左的参数是用来定义一个矩形的左上角和右下角的坐标,该矩形唯一确定了一个上角和右下角的坐标,该矩形唯一确定了一个内接椭圆(特例是圆),而最终要画的弧形是内接椭圆(特例是圆),而最终要画的弧形是该椭圆的一段。该椭圆的一段。create_arc()方法的调用格式如下:方法的调用格式如下:画布对象名画布对象名.create_arc(x0,y0,x1,y1
18、,属性属性设设置置)create_arc()的返回值是所创建的返回值是所创建的圆弧的的圆弧的标识号标识号,可以将标识号存入变量。,可以将标识号存入变量。弧形的开始位置由属性弧形的开始位置由属性start定义,其值为定义,其值为一个角度(一个角度(x轴方向为轴方向为0);弧形的结束位置由);弧形的结束位置由属性属性extent定义,其值表示从开始位置逆时针旋定义,其值表示从开始位置逆时针旋转的角度。转的角度。start属性的默认值为属性的默认值为0,extent属性属性的默认值为的默认值为90。显然,如果。显然,如果start设置为设置为0,extent设置为设置为360,则画出一个完整的椭圆,
19、效,则画出一个完整的椭圆,效果和果和create_oval()方法一样。方法一样。属性属性style用于规定圆弧的样式,可以取三用于规定圆弧的样式,可以取三种值:种值:PIESLICE是扇形,即圆弧两端与圆心相连;是扇形,即圆弧两端与圆心相连;ARC是弧,即圆周上的一段;是弧,即圆周上的一段;CHORD是弓形,是弓形,即即弧加连接弧两端的弦。弧加连接弧两端的弦。Style的默认值的默认值是是PIESLICE。from tkinter import *w=Tk()c=Canvas(w,width=350,height=150,bg=white)c.pack()c.create_arc(20,40
20、,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)弧形的其他常用属性弧形的其他常用属性outline、width、dash、fill、state和和tags的意义和默认值都和的意义和默认值都和矩形类似。注意只有矩形类似。注意只有PIESLICE和和CHORD形状形状才可填充颜色才可填充颜色。画布画布对象的对象的itemconfig()方法、方法、delete()方法、和方法、和move
21、()办法同样可用于弧形的属性设置、删除和移动。办法同样可用于弧形的属性设置、删除和移动。例例12-5 创建图创建图12-13所示的扇叶图形所示的扇叶图形。12.2.3 绘制线条与多边形绘制线条与多边形1绘制线条绘制线条画布画布对象提供对象提供create_line()方法,用于在画方法,用于在画布上创建连接多个点的线段序列,其调用格式如布上创建连接多个点的线段序列,其调用格式如下:下:画布对象名画布对象名.create_line(x0,y0,x1,y1,,xn,yn,属性设置属性设置)create_line()方法将各点(方法将各点(x0,y0),),(x1,y1),,(,(xn,yn)按顺序
22、用线条连接起来,)按顺序用线条连接起来,返回值是所创建的线条的标识号,返回值是所创建的线条的标识号,可以将标识号可以将标识号存入变量。存入变量。没有没有特别说明的话,相邻两点间用直接连特别说明的话,相邻两点间用直接连接,即图形整体上是一条折线。但如果将属性接,即图形整体上是一条折线。但如果将属性smooth设置成非设置成非0值,则各点被解释成值,则各点被解释成B样条曲样条曲线的顶点,图形整体是一条平滑的曲线。线的顶点,图形整体是一条平滑的曲线。线条线条不能形成边框和内部区域两部分,因不能形成边框和内部区域两部分,因此没有此没有outline属性,只有属性,只有fill属性,表示线条的属性,表示
23、线条的颜色,其默认值为黑色。颜色,其默认值为黑色。线条可以通过属性线条可以通过属性arrow来设置箭头,该属来设置箭头,该属性的默认值是性的默认值是NONE(无箭头)。如果将(无箭头)。如果将arrow设置为设置为FIRST,则箭头在,则箭头在(x0,y0)两端;设置为两端;设置为LAST,则箭头在(,则箭头在(xn,yn)端;设置为)端;设置为BOTH,则两端都有箭头。则两端都有箭头。属性属性arrowshape用于描述箭头形状,其值用于描述箭头形状,其值为三元组(为三元组(d1,d2,d3),含义如图所示。默认),含义如图所示。默认值为(值为(8,10,3)。和和前面介绍的各种图形一样,线
24、条还具前面介绍的各种图形一样,线条还具有有width、dash、state、tags等属性。画布等属性。画布对象的对象的itemconfig()方法、方法、delete()方法和方法和move()方法同样可用于线条的属性设置、删方法同样可用于线条的属性设置、删除和移动。除和移动。例例12-6 绘制绘制y=sin x sin(4x)曲线。曲线。2绘制多边形绘制多边形画布画布对象提供对象提供create_polygon()方法,用于方法,用于在画布上创建一个多边形。在画布上创建一个多边形。create_polygon()方方法的调用格式如下:法的调用格式如下:画布对象名画布对象名.create_p
25、olygon(x0,y0,x1,y1,,属性设置属性设置)create_polygon()的返回值是创建多边形的的返回值是创建多边形的标识号,可以将标识号存入一个变量。标识号,可以将标识号存入一个变量。和和矩形类似,矩形类似,outline和和fill分别设置多边形分别设置多边形的边框颜色和内部填充色,但与矩形的边框颜色和内部填充色,但与矩形不同的是,不同的是,多边形的多边形的outline属性默认值为空串,属性默认值为空串,即边框不即边框不可见,而可见,而fill属性的默认值为黑色属性的默认值为黑色。与线条类似,一般用直线连接顶点,但如与线条类似,一般用直线连接顶点,但如果将属性果将属性sm
展开阅读全文