Python语言程序设计第12章图形绘制 配源代码课件.pptx
《Python语言程序设计第12章图形绘制 配源代码课件.pptx》由会员分享,可在线阅读,更多相关《Python语言程序设计第12章图形绘制 配源代码课件.pptx(104页珍藏版)》请在三一办公上搜索。
1、Python语言程序设计刘卫国第12章 图形绘制配源代码,12.1.1 tkinter模块导入tkinter模块一般采用以下两种方法。 import tkinter from tkinter import *,12.1 Tkinter图形库概述,12.1.2 主窗口的创建主窗口也称为根窗口,这是一个顶层窗口,所有图形都是在这个窗口中绘制的。其创建格式为:窗口对象名=Tk()例如,下列语句创建主窗口w。 w=Tk(),12.1.3 画布对象的创建画布(canvas)就是用来进行绘图的区域,实际上是一个对象,可以在画布上绘制各种图形、标注文本。创建画布对象语句的格式如下:画布对象名=Canvas(
2、窗口对象名,属性名=属性值,)该语句创建一个画布对象,并对该对象的属性进行设置。语句中的Canvas代表tkinter模块提供的Canvas类,通过Canvas类的构造函数Canvas()创建画布对象。“窗口对象名”表示画布所在的窗口,“属性名=属性值”用于设置画布对象的属性。,下面的语句在主窗口w中创建一个宽度为300像素、高度为200像素、背景为白色的画布对象,并将画布对象命名为c。 c=Canvas(w,width=300,height=200,bg=white)注意,虽然已经创建了画布对象c,但在主窗口中并没有看到这块白色画布。为了让画布在窗口中显现出来,还需要执行如下语句。 c.pa
3、ck()其中c表示画布对象,pack()是画布对象的一个方法,这时在屏幕上看到原来的主窗口中放进一个300200的白色画布。,12.1.4 画布对象的坐标系tkinter模块为画布建立了坐标系。画布坐标系以画布左上角为原点,从原点水平向右为x轴,从原点垂直向下为y轴。,画布坐标系,12.1.5 画布中的图形对象1图形对象的标识画布中的图形对象需要采用某种方法来标识和引用,以便对该图形对象进行处理,具体采用标识号和标签(tag)两种标识方法。标识号是创建图形对象时自动为图形对象赋予的唯一的整数编号。标签相当于给图形对象命名,一个图形对象可以与多个标签相关联,而同一个标签可以与多个图形对象相关联,
4、即一个图形对象可以有多个名字,而且不同图形对象可以有相同的名字。,为图形对象指定标签有三种方法。(1)在创建图形时利用tags属性来指定标签,可以将tags属性设置为单个字符串,即单个名字,也可以设置为一个字符串元组,即多个名字。(2)在创建图形之后,可以利用画布的itemconfig()方法对tags属性进行设置。(3)利用画布的addtag_withtag()方法来为图形对象添加新标签。,2图形对象的共性操作(1)gettags()方法:用于获取给定图形对象的所有标签。(2)find_withtag()方法:用于获取与给定标签相关联的所有图形对象。(3)delete()方法:用于从画布上删
5、除指定的图形对象。(4)move()方法:用于在画布上移动指定图形。,绘制图形前,先要导入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_rectangle(x0,y0,x1,y1,属性设置)其中,(x0,y0)是矩形
6、左上角的坐标,(x1,y1)是矩形右下角的坐标。属性设置即对矩形的属性进行设置。,例如,下面的语句创建一个以(50,50)为左上角、以(200,100)为右下角的矩形。 c.create_rectangle(50,30,200,150)下面的语句再创建一个矩形,并将矩形标识号存入变量r中。 r=c.create_rectangle(80,70,250,180,tags=Rect2) r2,2矩形对象的常用属性(1)矩形边框属性outline属性。矩形边框可以用outline属性来设置颜色,其默认值为黑色。如果将outline设置为空串,则不显示边框,即透明的边框。width属性。边框的宽度可以
7、用width属性来设置,默认值为1像素。dash属性。边框可以画成虚线形式,这需要用到dash属性,该属性的值是整数元组。最常用的是二元组(a,b),其中a指定要画多少个像素,b指定要跳过多少个像素,如此重复,直至边框画完。若a、b相等,可以简记为(a,)。,(2)矩形内部填充属性fill属性。矩形内部区域可以用fill属性来设置填充颜色,此属性的默认值是空串,效果是内部透明。stipple属性。在填充颜色时,可以使用stipple属性设置填充画刷,即填充的点刻效果,可以取gray12、gray25、gray50、gray75等值。,(3)其他属性矩形还有个属性state,用于设置图形的显示状
8、态。默认值是NORMAL或normal,即正常显示。另一个有用的值是HIDDEN或hidden,它使矩形在画布上不可见。使一个图形在NORMAL和HIDDEN两个状态之间交替变化,即形成闪烁的效果。注意,属性值用大写字母形式时,不要加引号,而用小写字母形式时,一定要加引号,下面还有这种情况,到时只列出大写字母形式。,例12-1 绘制图12-7所示的四个正方形。,图12-7 绘制四个正方形分析:利用画布的create_rectangle()方法绘制正方形,注意设置属性和四个正方形之间的位置关系。,例12-2 绘制曲线,分析:绘制函数曲线可采用计算出函数曲线的各个点的坐标,将各点画出来,如果这些点
9、足够密,绘出的曲线会比较光滑。画布对角没有提供画“点”的方法,但可以画一个很小的矩形来当作点。,,t0,10。,12.2.2 绘制椭圆与圆弧1绘制椭圆画布对象提供create_oval()方法,用于在画布上画一个椭圆,其特例是圆。椭圆的位置和尺寸通过其外接矩形决定,而外接矩形由左上角坐标(x0,y0)和右下角坐标(x1,y1)定义。,create_oval()方法的调用格式如下:画布对象名.create_oval(x0,y0,x1,y1,属性设置)create_oval()的返回值是所创建椭圆的标识号,可以将标识号存入变量。和矩形类似,椭圆的常用属性包括outline、width、dash、f
10、ill、state和tags等。画布对象的itemconfig()方法、delete()方法和move()方法同样可用于椭圆的属性设置、删除和移动。,例12-3 创建图12-10所示的圆和椭圆。,图12-10 绘制圆和椭圆分析:利用画布的create_oval方法绘制一个圆和两个椭圆,注意设置属性和三个图形之间的位置关系。,例12-4 描绘地球绕太阳旋转的轨道。分析:分别创建一个椭圆和两个圆,并且为大圆形涂上红色表示太阳,为小圆形涂上蓝色表示地球。,2绘制圆弧画布对象提供create_arc()方法,用于在画布上创建一个弧形。与椭圆的绘制类似,create_arc()的参数是用来定义一个矩形的
11、左上角和右下角的坐标,该矩形唯一确定了一个内接椭圆(特例是圆),而最终要画的弧形是该椭圆的一段。create_arc()方法的调用格式如下:画布对象名.create_arc(x0,y0,x1,y1,属性设置)create_arc()的返回值是所创建的圆弧的标识号,可以将标识号存入变量。,弧形的开始位置由属性start定义,其值为一个角度(x轴方向为0);弧形的结束位置由属性extent定义,其值表示从开始位置逆时针旋转的角度。start属性的默认值为0,extent属性的默认值为90。显然,如果start设置为0,extent设置为360,则画出一个完整的椭圆,效果和create_oval()
12、方法一样。属性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,100,120,width=2) #默认样式是PIESLICEc.create_arc(120,40,200,120,style=CHORD,width=2)c.create_arc(220,40,
13、300,120,style=ARC,width=2),弧形的其他常用属性outline、width、dash、fill、state和tags的意义和默认值都和矩形类似。注意只有PIESLICE和CHORD形状才可填充颜色。画布对象的itemconfig()方法、delete()方法、和move()办法同样可用于弧形的属性设置、删除和移动。,例12-5 创建图12-13所示的扇叶图形。,12.2.3 绘制线条与多边形1绘制线条画布对象提供create_line()方法,用于在画布上创建连接多个点的线段序列,其调用格式如下:画布对象名.create_line(x0,y0,x1,y1,,xn,yn,
14、属性设置)create_line()方法将各点(x0,y0),(x1,y1),,(xn,yn)按顺序用线条连接起来,返回值是所创建的线条的标识号,可以将标识号存入变量。,没有特别说明的话,相邻两点间用直接连接,即图形整体上是一条折线。但如果将属性smooth设置成非0值,则各点被解释成B样条曲线的顶点,图形整体是一条平滑的曲线。线条不能形成边框和内部区域两部分,因此没有outline属性,只有fill属性,表示线条的颜色,其默认值为黑色。,线条可以通过属性arrow来设置箭头,该属性的默认值是NONE(无箭头)。如果将arrow设置为FIRST,则箭头在(x0,y0)两端;设置为LAST,则箭
15、头在(xn,yn)端;设置为BOTH,则两端都有箭头。属性arrowshape用于描述箭头形状,其值为三元组(d1,d2,d3),含义如图所示。默认值为(8,10,3)。,和前面介绍的各种图形一样,线条还具有width、dash、state、tags等属性。画布对象的itemconfig()方法、delete()方法和move()方法同样可用于线条的属性设置、删除和移动。,例12-6 绘制y=sin x sin(4x)曲线。,2绘制多边形画布对象提供create_polygon()方法,用于在画布上创建一个多边形。create_polygon()方法的调用格式如下:画布对象名.create_p
16、olygon(x0,y0,x1,y1,,属性设置)create_polygon()的返回值是创建多边形的标识号,可以将标识号存入一个变量。和矩形类似,outline和fill分别设置多边形的边框颜色和内部填充色,但与矩形不同的是,多边形的outline属性默认值为空串,即边框不可见,而fill属性的默认值为黑色。,与线条类似,一般用直线连接顶点,但如果将属性smooth设置成非0值,则表示用B样条曲线连接顶点,这样绘制的是由平滑曲线围成的图形。多边形的另几个常用属性width、dash、state和tags的用法都和矩形类似。画布对象的itemconfig()方法、delete()方法和mov
17、e()方法同样可用于多边形的属性设置、删除和移动。,例12-7 用红、黄、绿三种颜色填充矩形。,图12-16 三种颜色填充的矩形分析:先画矩形,再用红、黄、绿三种颜色分别绘制三角形、平行四边形和三角形,三个图形连在一起填充矩形。,12.2.4 显示文本与图像1显示文本画布对象提供create_text()方法,用于在画布上显示一行或多行文本。与普通的字符串不同,这里的文本被当作图形对象。create_text()方法的调用格式如下:画布对象名.create_text(x,y,属性设置)其中(x,y)指定文本显示的参考位置。create_text()的返回值是所创造的文本的标识号,可以将标识号存
18、入变量中。,文本内容由text属性设置,其值就是要显示的字符串。字符串中可以使用换行字符“n”,从而实现多行文本的显示。anchor属性用于指定文本的哪个锚点与显示位置(x,y)对齐,通过锚点可以控制文本的相对位置,例如,若将anchor设置为N,则将文本边界框的顶边中点置于参考点(x,y)。,fill属性用于设置文本的颜色,默认值为黑色。如果设置为空串,则文本不可见。justify属性用于控制多行文本的对齐方式,其值为LEFT、CENTER或RIGHT,默认值为LEFT。width属性用于控制文本的宽度,超出宽度就要换行。Font属性指定文本字体。字体描述使用一个三元组,包含字体名称、大小和
19、字形名称,例如(Times New Roman,10,bold)表示10号加黑新罗马字,(宋体,12,italic)表示12号斜体宋体。state属性、tags属性的意义与其他图形对象相同。,画布对象的itemcget()和intemconfig()方法可用于读取或修改文本的内容,画布对象的delete()方法、move()方法可用于文本的删除和移动。,例12-8 画布文本显示示例。,2显示图像tkinter模块针对不同格式的图像文件有不同的显示方法,这里只介绍显示gif格式图像的方法。具体步骤如下。(1)利用tkinter模块提供的PhotoImage类来创建图像对象,语句格式如下:图形对象
20、=PhotoImage(file=图像文件名)其中,属性file用于指定图像文件(支持gif、png、bmp、pgm、ppm等格式),PhotoImage()返回值是一个图像对象,可以用变量来引用这个对象。,(2)通过画布对象提供的create_image()方法在画布上显示图像,方法的调用格式如下:画布对象名.create_image(x,y,image=图像对象,属性设置)其中,(x,y)是决定图像显示位置的参考点。create_image()方法的返回值是所创建的图像在画布上的标识号,可以将标识号存入一个变量中。,图像在画布上的位置由参考点(x,y)和anchor属性决定,具体设置与文本
21、相同。可以为图像设置属性state、tags,意义与其他图形对象相同。画布对象的delete()方法、move()方法同样可用于图像的删除和移动。,例12-9 假设有图像文件e:mypythonpython.png,将该图像显示在画布中。,12.3 图形的事件处理,画布及画布上的图形都是对象,都可以与操作事件绑定,这样用户可以利用键盘、鼠标来操作、控制画布和图形。例12-10 在画布轮换交替显示两行文本,鼠标左键单击文本时替换一次,右键单击文本时隐藏文本,鼠标指针指向文本时使文本随机移动。,12.4.1 turtle绘图1导入turtle模块使用turtle绘图,首先需要导入turtle模块,
22、有以下两种方法。 import turtle from turtle import *,12.4 turtle绘图与Graphics图形库,2turtle绘图属性turtle绘图有三个要素,分别是位置、方向和画笔。(1)位置是指箭头在Turtle 图形窗口中的位置。(2)方向是指箭头的指向,使用left(degree)、right(degree)函数使得箭头分别向左、向右旋转degree度。(3)画笔是指绘制的线条的颜色和宽度。,有关画笔控制函数如下。down():放下画笔,移动时绘制图形。这也是默认的状态。up():提起画笔,移动时不绘制图形。pensize(w)或width(w):绘制图形
23、时画笔的宽度,w为一个正数。pencolor(s)或color(s):绘制图形时画笔的颜色,s是一个字符串,例如red、blue、green分别表示红色、蓝色、绿色。fillcolor(s):绘制图形的填充颜色。,3turtle绘图命令turtle绘图有着许多控制箭头运动的命令,从而绘制出各种图形。goto(x,y):将箭头从当前位置径直移动到坐标为(x,y)的位置,这时当前方向不起作用,移动后方向也不改变。如果想要移动箭头到(x,y)处理,但不要绘制图形,可以使用up()函数。例如,下列命令绘制一根水平直线。from turtle import *reset() #将整个绘图窗口清空并将箭头
24、置于原点(窗口的中心)。goto(100,0) #当前位置(0,0)运动到(100,0)位置,forward(d):控制箭头向前移动,其中d代表移动的距离。在移动前,需要设置箭头的位置、方向和画笔三个属性。backward(d):与forward()函数相反,控制箭头向后移动,其中d代表移动的距离。speed(v):控制箭头移动的速度,v取0,10范围的整数,数字越大,速度越快。也可以使用slow、fast来控制速度。,例12-11 绘制一个正方形。程序如下:from turtle import *color(blue) #定义绘制时画笔的颜色pensize(5) #定义绘制时画笔的线条宽度s
25、peed(10) #定义绘图的速度for i in range(4): #绘出正方形的四条边 forward(100) right(90)在设置了绘图状态之后,控制箭头前进(forward)一段距离,右转(right)90度,重复四次即可。,turtle模块还有一些内置函数,例如画圆的函数circle(r),该函数以箭头当前位置为圆的底部坐标,以r为半径画圆。例12-12 绘制三个同心圆。程序如下:from turtle import *for i in range(3): up() #提起画笔 goto(0,-50-i*50) #确定画圆的起点 down() #放下画笔 circle(50+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Python语言程序设计第12章 图形绘制 配源代码课件 Python 语言程序设计 12 图形 绘制 源代码 课件
链接地址:https://www.31ppt.com/p-1566024.html