Python语言程序设计第12章图形绘制 配源代码课件.pptx

上传人:小飞机 文档编号:1566024 上传时间:2022-12-06 格式:PPTX 页数:104 大小:591.86KB
返回 下载 相关 举报
Python语言程序设计第12章图形绘制 配源代码课件.pptx_第1页
第1页 / 共104页
Python语言程序设计第12章图形绘制 配源代码课件.pptx_第2页
第2页 / 共104页
Python语言程序设计第12章图形绘制 配源代码课件.pptx_第3页
第3页 / 共104页
Python语言程序设计第12章图形绘制 配源代码课件.pptx_第4页
第4页 / 共104页
Python语言程序设计第12章图形绘制 配源代码课件.pptx_第5页
第5页 / 共104页
点击查看更多>>
资源描述

《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+

26、i*50) #画圆,12.4.2 Graphics图形库1模块导入与图形窗口graphics模块文件(graphics.py)可以从网站http:/mcsp.wartburg.edu/zelle/python下载,下载后将graphics.py文件与用户自己的图形程序放在一个目录中,或者放在Python安装目录中即可。,使用graphics绘图,首先要导入graphics模块,语句格式有如下两种。 import graphics from graphics import *其次,使用graphics提供的GraphWin()函数创建一个图形窗口。在图形窗口中,设有标题栏,以及最小化、最大化、关

27、闭等按钮。例如: win=GraphWin()GraphWin()函数在屏幕上创建了一个图形窗口。,graphics图形窗口也有各种属性,在调用GraphWin()函数时可以提供各种参数。例如: win=GraphWin(My Graphics Window,300,200)这条语句的含义是在屏幕上创建一个窗口对象,窗口标题为“My Graphics Window”,宽度为300像素,高度为200像素。窗口操作结束后应该关闭图形窗口,关闭窗口的函数调用方法为: win.close(),2图形对象在graphics模块中,提供了GraphWin(图形窗口)、Point(点)、Line(直线)、C

28、ircle(圆)、Oval(椭圆)、Rectangle(矩形)、Polygon(多边形)、Text(文本)等类,利用类可以创建相应的图形对象。每个对象都是相应的类的实例,对象都具有自己的属性和方法(操作)。,(1)点graphics模块提供了point类,用于在窗口中画点。创建点对象的语句格式为:p=Point(x坐标,y坐标) from graphics import * win=GraphWin() p=Point(100,50) p.draw(win) print(p.getX(),p.getY()100 50 p.move(20,30) print(p.getX(),p.getY()1

29、20 80,此外,Point对象还提供以下方法。p.setFill():设置点p的颜色。p.setOutline():设置边框的颜色。对Point对象来说,与setFill()方法没有区别。p.undraw():随藏对象p,即在图形窗口中对象p变成不可见。注意,隐藏并非删除,对象p仍然存在,随时可以重新执行draw()。p.clone():复制一个与p一模一样的对象。,除了用字符串指定颜色之外,graphics模块还提供了color_rgb(r,g,b)函数来设置颜色,其中的r,g,b参数取0255之间的整数,分别表示红色、绿色、蓝色的数值,color_rgb()函数表示的颜色就是三种颜色混合

30、以后的颜色。例如color_rgb(255,0,0)表示亮红色,color_rgb(0,255,0)表示亮绿色。,(2)直线直线类Line用于绘制直线。创建直线对象的语句格式为:line=Line(端点1,端点2)其中,两个端点都是Point对象。和Point对象一样,Line对象也支持draw()、undraw()、move()、setFill()、setOutline()、clone()等方法。此外,Line对象还支持setArrow()方法,用于为直线画箭头,setWidth()方法用于设置直线宽度。,例12-13 利用直线对象绘制一个正方形。,(3)圆圆类为Circle,创建圆形对象的

31、语句格式为:c=Circle(圆心,半径)其中,圆心是Point对象,半径是个数值。Circle对象同样支持draw()、undraw()、setFill()、setOutline、clone()、setWidth()等方法。此外,Circle对象还支持c.getRadius()方法,用于获取圆形对象c的半径。,例12-14 绘制三个同心圆,并且将它们填充不同颜色。,(4)椭圆椭圆类为Oval,创建椭圆对象的语句格式为:o=Oval(左上角,右下角)其中,左上角和右下角是两个Point对象,用于指定一个矩形,再由这个矩形定义一个内接椭圆。椭圆对象同样支持draw()、undraw()、move

32、()、setFill()、setOutline()、clone()、setWidth()等方法。,例12-15 绘制四个相扣的圆,并且将它们的边线设置成不同颜色,边线宽度相同。,(5)矩形矩形类为Rectangle,创建矩形对象的语句格式为:r=Rectangle(左上角,右下角)其中,左上角和右下角是两个Point对象,用于指定矩形。矩形对象同样支持draw()、undraw()、move()、setFill()、setOutline()、clone()、setWidth()等方法。此外,矩形还支持的方法有r.getP1()、r.getP2和r.getCenter(),分别用于获取左上角、右

33、下角和中心坐标,返回值都是Point对象。,例12-16 绘制图12-25所示的正弦曲线图形。,(6)多边形多边形类为Polygon,创建多边形对象的语句格式为:p=Polygon(顶点1,顶点n)将各顶点用直线相连,即成多边形。多边形对象同样支持draw()、undraw()、move()、setFill()、setOutline()、clone()、setWidth()等方法。此外还支持方法poly.getPoints(),用于获取多边形的各个顶点坐标。,例12-17 绘制红色的正五边形。,(7)文本文本类为Text,创建文本对象的语句格式为:t=Text(中心点,字符串)其中,中心点是个

34、Point对象,字符串是显示的文本内容。文本对象支持许多方法。,例12-18 文本格式示例。,3交互式图形操作graphics模块提供了两个简单的方法获得用户在图形界面窗口中的操作事件。(1)捕捉鼠标单击事件可以通过GraphWin类中的getMouse()方法获得用户在窗口内单击鼠标的信息。当getMouse()方法被一个GraphWin对象调用,程序将停止并等待用户在窗口内单击鼠标。用户单击鼠标的位置以Point对象作为返回值返回给程序。,看下面的程序from graphics import *win=GraphWin()p=win.getMouse()print(p.getX(),p.g

35、etY()getMouse()的返回值是一个Point对象,使用该对象的getX()和getY()方法可以得到单击鼠标的坐标。,例12-19 在窗口单击鼠标时绘制一个绿色的正方形。,(2)处理文本输入graphics模块还包括一个输入对象Entry,用于获取窗口中的键盘输入事件。Entry对象在图形窗口中创建一个文本框,它与Text对象类似,也使用setText()和getText()方法。不同之处在于Entry对象的内容可以被用户修改。结合下面的温度转换程序说明其用法。,例12-20 创建一个图形窗口,其中有一个输入框,用于输入摄氏温度值,同时提供一个“温度转换”按钮,单击按钮时能够将摄氏温

36、度转换为华氏温度,同时“温度转换”变为“退出”按钮,单击按钮退出图形窗口。,12.5 图形应用举例,12.5.1 验证Fibonacci数列的性质例12-21 取n=8,用图解法验证Fibonacci数列的性质:f12+f22+f32+f82=f8f9,12.5.2 统计图表例12-22按百分制输入学生考试成绩(输入负数时结束输入),统计各等级分数的人数(成绩90为优秀,成绩80但90为良好,成绩70但80为中等,成绩60但70为及格,成绩60为不及格),并用饼图来直观地给出各等级人数的比例。,12.5.3 分形曲线例12-23利用turtle绘图绘制科赫曲线。,科赫曲线,科赫雪花曲线,12.

37、5.4 利用动画模拟天体运动例12-24 利用动画演示太阳、地球和月球三个天体之间的运动情况,即月球绕地球运动,并且和地球一起绕太阳运动。地球绕太阳运动10圈后暂停。,配套源代码,例12-1 程序如下:from tkinter import *w=Tk() #创建主窗口w.title(绘制四个正方形)c=Canvas(w,width=300,height=220,bg=white) #创建画布对象c.pack() #使画布可见c.create_rectangle(110,110,190,190,fill=green, outline=green,width=5) #绘制无边框绿色正方形c.cr

38、eate_rectangle(110,30,190,110,fill=#ff0000, stipple=gray25) #绘制红色点画正方形c.create_rectangle(30,110,110,190,fill=yellow, outline=red,width=5) #绘制红色边框黄色正方形c.create_rectangle(190,110,270,190,dash=10,width=5, fill=red) #绘制虚线边框红色正方形,配套源代码,例12-2 程序如下:from math import *from tkinter import *w=Tk()w.title(绘制曲线)

39、c=Canvas(w,width=300,height=200,bg=white)c.pack()#绘制函数曲线t=0while t=10*pi: x=3*(cos(t)+t*sin(t) y=3*(sin(t)-t*cos(t) x+=150 #移动坐标 y+=100 c.create_rectangle(x,y,x+0.5,y+0.5) t+=0.1,配套源代码,例12-3 程序如下:from tkinter import *w=Tk()w.title(绘制圆和椭圆)c=Canvas(w,width=260,height=260,bg=white) #创建画布对象c.pack()c.cre

40、ate_oval(30,30,230,230,fill=red,width=2) #绘制红色圆c.create_oval(30,80,230,180,fill=yellow,width=2) #绘制黄色椭圆c.create_oval(80,30,180,230,fill=gray,width=2) #绘制灰色椭圆,配套源代码,例12-4 程序如下:from tkinter import *w=Tk()w.title(绘制地球绕太阳旋转轨道)c=Canvas(w,width=300,height=200,bg=white) #创建画布对象c.pack()c.create_oval(50,50,2

41、50,150,dash=(4,2),width=2) #绘制椭圆轨道c.create_oval(110,80,150,120,fill=red,outline=red)#绘制太阳c.create_oval(240,95,255,110,fill=blue) #绘制地球,配套源代码,例12-5 程序如下:from tkinter import *w=Tk()w.title(绘制扇叶图形)c=Canvas(w,width=300,height=240,bg=white)c.pack()for i in range(0,360,60): c.create_arc(50,20,250,220,fill

42、=red,start=i,extent=30),配套源代码,例12-6 程序如下:from math import *from tkinter import *w=Tk()w.title(绘制曲线)W=400;H=220 #画布宽度、高度O_X=2;O_Y=H/2 #x,y圆点,窗口左边中心S_X=120;S_Y=100 #x,y轴缩放倍数x0=y0=0; #坐标初始值c=Canvas(w,width=W,height=H,bg=white) #创建画布对象c.pack()c.create_line(0,O_Y,W,O_Y) #绘制x轴c.create_line(O_X,0,O_X,H) #绘

43、制y轴for i in range(0,180,1): arc=pi*i/180 x=O_X+arc*S_X y=O_Y-sin(arc)*sin(4*pi*arc)*S_Y c.create_line(x0,y0,x,y) x0=x;y0=y,配套源代码,例12-7 程序如下:from tkinter import *w=Tk()w.title(三种颜色填充矩形)c=Canvas(w,width=340,height=200,bg=white)c.pack()c.create_rectangle(50,50,290,150,width=5) #绘制矩形c.create_polygon(50,

44、50,50,150,130,150,fill=red) #绘制红色三角形c.create_polygon(50,50,130,150,290,150,210,50, fill=yellow) #绘制黄色平行四边形c.create_polygon(210,50,290,150,290,50,fill=green) #绘制绿色三角形,配套源代码,例12-8 程序如下:from tkinter import *w=Tk()w.title(文本显示)c=Canvas(w,width=400,height=100,bg=white)c.pack()c.create_rectangle(200,50,20

45、1,51,width=8) #显示文本参考位置c.create_text(200,50,text=Hello Python1, font=(Courier New,15,normal),anchor=SE) #右下对齐c.create_text(200,50,text=Hello Python2, font=(Courier New,15,normal),anchor=SW) #左下对齐c.create_text(200,50,text=Hello Python3, font=(Courier New,15,normal),anchor=NE) #右上对齐c.create_text(200,5

46、0,text=Hello Python4, font=(Courier New,15,normal),anchor=NW) #左上对齐,配套源代码,例12-9 程序如下:from tkinter import *w=Tk()w.title(图像显示)c=Canvas(w,width=300,height=150,bg=white)c.pack()pic=PhotoImage(file=e:mypythonpython.png)c.create_image(150,75,image=pic),例12-10 程序如下:def canvasF(event): if c.itemcget(t,text

47、)=Python!: c.itemconfig(t,text=Programming!) else: c.itemconfig(t,text=Python!)def textF1(event): c.move(t,randint(-10,10),randint(-10,10)def textF2(event): if c.itemcget(t,fill)!=white: c.itemconfig(t,fill=white) else: c.itemconfig(t,fill=black)from tkinter import *from random import *w=Tk()w.title

48、(文本交替显示)c=Canvas(w,width=250,height=150,bg=white)c.pack()t=c.create_text(125,75,text=Python!,font=(Arial,12,italic)c.bind(,canvasF)c.tag_bind(t,textF1)c.tag_bind(t,textF2)w.mainloop(),配套源代码,例12-11 程序如下:from turtle import *color(blue) #定义绘制时画笔的颜色pensize(5) #定义绘制时画笔的线条宽度speed(10) #定义绘图的速度for i in rang

49、e(4): #绘出正方形的四条边 forward(100) right(90)例12-12 程序如下:from turtle import *for i in range(3): up() #提起画笔 goto(0,-50-i*50) #确定画圆的起点 down() #放下画笔 circle(50+i*50) #画圆,配套源代码,例12-13 程序如下:from graphics import *win=GraphWin(绘制正方形)p1=Point(50,50);p2=Point(150,50)p3=Point(150,150);p4=Point(50,150)l1=Line(p1,p2);

50、l2=Line(p2,p3)l3=Line(p3,p4);l4=Line(p4,p1)l1.draw(win);l2.draw(win)l3.draw(win);l4.draw(win),配套源代码,例12-14 程序如下:from graphics import *win=GraphWin(绘制同心圆)pt=Point(100,100)cir1=Circle(pt,80);cir1.draw(win);cir1.setFill(green)cir2=Circle(pt,50);cir2.draw(win);cir2.setFill(color_rgb(100,100,255)cir3=Cir

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号