您好,欢迎访问三七文档
1of51刘祖根2015-10-20计算机导论-Python语言第第55讲讲图形编程图形编程2of51应用程序经常要用到图形/图像/动画¾统计软件¾证券分析软件¾教学软件可视化(visualization):将抽象事物和过程转变成视觉可见的、形象直观的图形图像表示¾柱状图,直方图,散点图,网络图,流程图,树,地图,图像,动画,...有图有真相3of51科学可视化:将科学与工程计算、实验中的数据用直观的计算机图形图像呈现出来,以便人们理解数据、增强对事物现象的认识和对内在规律的洞察.数据可视化:将海量数据转化为数据图像,以帮助人们直观地观察数据.可以进而发展到更高层次的信息可视化和知识可视化.工程设计可视化...计算可视化4of514包含的信息是复杂的¾圆形:圆心(元组)和半径(数值);内部及边界的颜色(RGB元组);...图形操作是复杂的¾求面积,周长等传统计算;还有移动位置,改颜色等等图形是复杂数据A:如何表示图形这一类的复杂数据、如何操作这类复杂数据呢?5of51编程:数据表示+操作过程数据表示:编程语言已提供了一些数据类型数据类型,例如:¾字符串-雇员姓名,整数-年龄,浮点数-工资¾雇员名单-字符串数据构成的列表数据操作:各种数据类型所支持的数据操作支持的数据操作来处理数据,例如:¾工资-加减乘除,姓名-抽取姓和名数据,revisit(1)☆每种数据类型包含一个合法值合法值的集合,以及一个合法运算合法运算的集合6of51先考虑数据的表示,再考虑对数据的操作数据和对数据的操作被看作是两件相互分离的事数据,revisit(2)信息解法现实世界问题数据处理机器世界程序7of51例如:输入三边长,判断该三个边能否构成三角形,如能,则将三角形的周长与面积在屏幕输出。¾先获得边长数据,再判断数据合法性,求周长,面积数据,revisit(3)mainGetEdgesIsTriangleGetAreaa,b,ca,b,cGetPerimetera,b,cresulta,b,c面向过程自顶向下面向过程自顶向下8of51将数据和对数据的操作视为不可分离不可分离两者组合在一起形成一个实体——对象对象面向对象面向对象术语中,对象的数据称为属性,对象的操作称为方法。对象(object)事物(状态,行为)现实世界问题机器世界程序对象(属性,操作)9of51例如:输入三边长,判断该三个边能否构成三角形,如能,则将三角形的周长与面积在屏幕输出。对象a,b,cIsTriangle()GetPerimeter()GetArea()数据操作对象:Triangle对象:Triangle☆图形应用程序非常适合采用面向对象面向对象概念。10of51Tkinter¾Python自带的一个标准模块,是一个功能强大的图形用户界面工具包,能够用来开发像Windows应用程序一样具有窗口、菜单、按钮等图形构件的程序。Python图形库11of51导入模块importTkinter或fromTkinterimport*创建根窗口:作图窗口root=Tk()Tkinter图形编程(1)11根窗口☆☆根窗口根窗口实际上是一个对象对象,它有自己的属性(如宽度、高度、窗口标题),也有自己的方法。12of51121212创建画布对象c=Canvas(c=Canvas(窗口窗口,,选项选项1=1=值值1,...)1,...)¾Canvas是画布类(class),利用它可创建画布对象¾在窗口中创建画布¾选项=值用来设置画布对象的数据,如高度,宽度,背景色等例如:在root中创建300x200的白色画布c=Canvas(root,width=300,height=200,bg=‘white')Tkinter图形编程(2)13of511313布置画布¾已经创建了画布c,但在窗口root中看不见,因为还需要将画布布置到窗口中.c.packc.pack()()Tkinter图形编程(3)在面向对象编程中,对对象中的数据执行操作,采用点表示法——“对象.操作”。¾c.pack()中,变量c代表Canvas对象,pack()是c能够响应的一个方法。¾c.pack()表示向对象c发出执行pack()方法的请求。14of51画布上的坐标系¾坐标单位是像素9画布左上角原点坐标为(0,0),9300x200的画布右下角坐标为(299,199)¾也可用厘米(c),英寸(i)等.¾c.pack()表示请画布c执行pack布局操作Tkinter图形编程(4)15of51在画布上绘图,例如:¾画布对象提供create_rectangle()方法,用于在画布上创建矩形。c.create_rectangle(x0,y0,x1,y1,c.create_rectangle(x0,y0,x1,y1,选项选项...)...)¾矩形的位置和大小由两点定义:9(x0,y0)给出矩形的左上角,(x1,y1)给出矩形的右下角¾返回值是所创建的矩形的标识号标识号¾常用选项9outline=颜色9fill=颜色9state=NORMAL/HIDDEN9dash=(线段长,间隔)c.create_rectangle(50,50,200,100)Tkinter图形编程(5)16of51画布上的图形¾都有标识号标识号,用于区分同一画布上的多个图形,99自动创建,唯一自动创建,唯一id=c.create_rectangle(50,50,200,100)¾也可以为图形命名(标签标签)9字符串型9允许1对多,多对1图形项标示17of511.在创建图形时利用选项tags来指定¾可指定单个字符串,或一个字符串元组(多个名字)r1=c.create_rectangle(20,20,100,80,tags=#1)r2=c.create_rectangle(40,50,200,180,tags=(myRect,#2))2.图形创建后,用画布的itemconfig()方法来设置c.itemconfig(r1,tags=(myRect,rectOne))3.用画布的addtag_withtag()方法为图形项增添新标签c.addtag_withtag(ourRect,rectOne)指定标签18of51删除画布上的图形c.delete(idc.delete(id))¾id是画布上图形的标识号移动画布上的图形c.move(id,dx,dyc.move(id,dx,dy))¾id是图形标识号,dx和dy是轴向移动距离设置画布上图形的选项c.itemconfig(idc.itemconfig(id,,选项选项==值值...)...)画布对象的方法(1)1819of51c.create_rectangle(50,50,200,100)1r2=c.create_rectangle(80,70,240,150,tags=rect#2)printr22c.itemconfig(1,fill=black)c.itemconfig(r2,fil1=grey,outline=white,width=6)c.delete(r2)c.move(1,50,50)c.create_rectangle(50,50,51,51)#Tkinter画点p1=(10,10)p2=(50,80)c.create_rectangle(p1,p2,tags=#3)xy=(100,110,200,220)c.create_rectangle(xy)例:画矩形坐标存储在变量中的做法是值得推荐的!20of51画椭圆c.create_oval(x0,y0,x1,y1,c.create_oval(x0,y0,x1,y1,选项选项...)...)¾返回所画椭圆的标识号¾常用选项9outline=颜色9fill=颜色9state=NORMAL/HIDDEN9dash=(线段长,间隔)画布对象的方法(2)限定框(boundingbox),即外接矩形21of51o1=c.create_oval(50,50,250,150)o2=c.create_oval(110,85,140,115,fill='red')o3=c.create_oval(245,95,255,105,fill='blue')例:画椭圆22of51画弧形c.create_arc(x0,y0,x1,y1,c.create_arc(x0,y0,x1,y1,选项选项...)...)¾返回所画弧形的标识号¾常用选项9start=开始位置(角度)9extent=逆时针旋转的角度9style=PIESLICE/ARC/CHORD9outline,fill,state,dash等画布对象的方法(3)PIESLICECHORDARC23of51bbox=(50,50,250,150)c.create_arc(bbox)c.create_arc(bbox,start=100,extent=140,style=arc,width=4)c.create_arc(bbox,start=250,extent=110,style=chord)例:画弧形24of51画线条c.create_line(x0,y0,...c.create_line(x0,y0,...xn,ynxn,yn,,选项选项...)...)¾返回所画线条的标识号¾常用选项9smooth=0:折线/非0:平滑曲线9arrow=NONE/FIRST/LAST/BOTH9arrowshape=(d1,d2,d3)9fill,state,dash等画布对象的方法(4)25of51s1=(20,20)s2=(60,40)s3=(80,60)s4=(85,80)s5=(70,100)s6=(85,115)s7=(110,100)polaris=(220,40)c.create_oval(s1,(23,23),fill='black')c.create_oval(s2,(63,43),fill='black')...c.create_oval(s7,(113,103),fill='black')c.create_oval((222,36),(226,42),fill='black')c.create_line(s1,s2,s3,s4,s5,s6,s7,s4)c.create_line(s7,polaris,dash=(4,),arrow=LAST)c.create_line(5,190,150,160,295,190,smooth=1)例:画北斗七星和北极星26of51画多边形c.create_polygon(x0,y0,...c.create_polygon(x0,y0,...xn,ynxn,yn,,选项选项...)...)¾返回所画多边形的标识号¾常用选项9smooth=0:折线/非0:平滑曲线9outline(缺省值为空)9fill(缺省值为黑色)9state,dash等画布对象的方法(5)27of51p11,p21,p31=(70,20),(70+100,20),(70,20+100)p12,p22,p32=(35,50),(35+100,50),(35,50+100)p13,p23,p33=(55,85),(55+100,85),(55,85+100)p14,p24,p34=(85,85),(85+100,85),(85,85+100)p15,p25,p35=(105,50),(105+100,50),(105,50+100)c.create_polygon(p11,p12,p13
本文标题:05-图形编程
链接地址:https://www.777doc.com/doc-5659225 .html