资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,程序设计思想与方法,hyweng -,*,程序设计思想与方法,4,5,章,2,课件及有关资料,R,:,1234,字符串处理,文本数据,简单的字符串处理,字符串的机内表示,字符串和密码,格式化输出,文件处理,文本数据,计算机应用从科学计算转向信息管理,.,信息管理中大量的数据都是文本数据,.,如姓名,地址,简历等等,计算机中用字符串来表示文本数据,.,4,字符串类型,字符串,:,字符序列,字符串字面值,:,用一对引号,(,单或双,),标明,.,“hello world”,!#$%&*,“,汉字也是字符”,字符串中包含引号怎么办,?,包含单引号,:,串用双引号括住,包含双引号,:,串用单引号括住,两者都有,:,更一般的方法是串中用转义字符,print “Alice said, “Hello, Bob”,Lu Chaojun, SJTU,5,字符串处理,文本数据,简单的字符串处理,字符串的机内表示,字符串和密码,格式化输出,文件处理,字符串的输入,普通变量的输入,num,= input(“Enter a number: “),Enter a number : 5.6,变量,num,得到值,5.6,如果用同样的方法输入字符串,str = input(“Enter a string: “),Enter a string: John,Python,会输出出错信息,原因,:,input(),是把输入当成表达式来计算的,!,Lu Chaojun, SJTU,7,字符串的正确输入,输入时加上引号,str = input(“Enter a string: “),Enter a string: John,Enter a string: “John”,使用,raw_input(),str = raw_input(“Enter a string: “),Enter a string: John,input,与,raw_input,x = input() x = raw_input(),“John” John,x x,John John,x = input() x = raw_input(),3*4+2 3*4+2,x x,14 3*4+2,Lu Chaojun, SJTU,9,字符串赋值,字符串可以直接赋值,Str = abcde,Str,abcde,取字符,字符串是字符序列,可通过位置索引访问每个字符,.,对长度为,n,的字符串,索引可以,是大于,0,的数,:,自左向右为,0 ,n,1,或者,是负数,:,自右向左为,1, 2, 3, ,n,例如,:,若,str = “Hello Bob”,则,str0,或,str,9,是,H,str5,或,str,4,是 ,str8,或,str,1,是,b,str9,或,str,10,越界出错,取子串,切段,:,取一个索引范围内的字符,.,:,所取子串,:,位置索引从,start end,1,start,或,/,和,end,可省略,缺省值为串的首尾,例如,:,若,str = “Hello Bob”,则,str0:3,是,Hel,str5:9,是,Bob,str:5,即,str0:5,str5:,即,str5,9,str:,即,str0:9,连接,两字符串的连接, + ,例如,:,“Hello” + “Bob”,得到“,HelloBob”,一个字符串的重复,例如,:,3*“Hi”,和“,Hi”*3,都得到“,HiHiHi”,串长度函数,len(),编程实例,:,获得每个月份的缩写,在一个数据表里查找目标,def main():,months=“JanFebMarAprMayJunJulAugSepOctNovDec”,n = input(“Enter month number (1-12): ”),pos = (n-1)*3,monthAbbr = monthspos:pos+3,print “The month abbreviation is”,monthAbbr+”.”,这是简单查找:利用位置规律来定位,.,若是月份全称怎么办,?,字符串处理,文本数据,简单的字符串处理,字符串的机内表示,字符串和密码,格式化输出,文件处理,字符串的机内表示,与数值一样,计算机内用二进制数表示每一个字符,因此操作字符串本质上仍然是数值运算,.,表示字符的这个数值称为字符的编码,.,每个字符用什么编码,?,对这个问题的不同回答就导致了许多不同的字符编码系统,例如,:,字符集只包含,AZ,,分别用,126,表示,.,“8 5 12 12 15”,是什么意思,?,编码标准,不同计算机若用不同编码体系,则彼此无法沟通。,标准化,ASCII,:单字节编码,只用到,7,位,: 0 - 127,96,个可打印字符,32,个控制字符,利用,8,位可扩充,ASCII: 0 - 255,GB2312,:两字节,(6763,个汉字,),GB18030,:最多四字节,(70244,个汉字,),Unicode,:最多四字节,.,字符与编码,求给定字符的编码,: ord(),ord(a),可得,97,求给定编码的字符,:chr(),chr(97),可得,a,可见,Python 2.7,支持,ASCII.,支持中文编码吗,?,print “,你好”,字符串处理,文本数据,简单的字符串处理,字符串的机内表示,字符串和密码,格式化输出,文件处理,编码,编码:输出一串字符对应的内码,def main():,message=raw_input(Enter the message to encode:),for ch in message:,print ord(ch),main(),执行时,Enter the message to encode,:,abcdef,97 98 99 100 101 102,解码,输出一串数字对应的字符串称为解码,import string,def main():,code = raw_input(Enter the code of message: ),message = ,for numStr in string.split(code):,num = eval(numStr),message = message + chr(num),print the decoded message is:, message,main(),运行时,Enter the code of message,:,97 98 99 100,the decoded message is,:,abcd,几个函数,字符串与数字的相互转换,eval,(字符串):将字符串转换成数字。例如:,eval(“500”),返回,500,str(,表达式,) :,将数值当作字符串。例如,str(3+4*5),string.split,:,string,库中的函数,字符串库,Python,提供的,string,库包含了很多有用的字符串处理函数,例如,split(),:,将字符串拆分成子串,string.split(“Hello string library!”),返回结果,:,Hello,string,library!,string.split(“32,24,25,57”,”,”),返回结果,:,32,24,25,57,字符串库的常用函数,capitalize(s):,使字符串,s,的首字母大写,capwords(s):,使字符串,s,中的每个单词首字母大写,center(s, width), ljust(s, width), rjust(s, width):,使,s,变成,width,宽度且居中,/,左对齐,/,右对齐,count(s, sub): sub,在,s,中出现次数,find(s, sub), rfind(s, sub):,在,s,中找,sub,的首次,/,末次出现,join(seq):,将串序列中的串合并成一个串,分隔符默认为空格,lower(s), upper(s):,将串变成小写,/,大写,lstrip(s), rstrip(s):,删除打头,/,收尾的空格,replace(s, oldsub, newsub):,在,s,中用新子串替换旧子串,字符串与密码,字符串在机内使用一个数字序列表示。如果不知道采用什么编码,只看这个数字序列是猜不出表示的是什么字符串。这就是一种加密机制,称为替换法。,字符编码都是工业标准,不是为了保密目的,从编码到密码,密码,:,为了保密而对信息进行编码,.,加密是计算机的一个重要应用,明文,密文,加密,解密,凯撒密码(,Caesar cipher,),a-D,、,b-E,、,c-F,、,d-G,、,e-H s-V ,、,z-C,eg.,明文:,access control,可变为:,DFFHVV FRQWURO,字符串处理,文本数据,简单的字符串处理,字符串的机内表示,字符串和密码,格式化输出,文件处理,格式化输出,格式化运算符,%,语法, % (),语义,:,模板串中用,%,标记“空位”,输出时用实际值填入,.,例如,print “The price is $,%0.2f,” % (100),The price is $100.00,格式描述,%.,三种类型字符,:,d,ecimal,f,loat,s,tring,宽度,:,用多少位置显示数值,.,省略或指定为,0:,根据值的实际长度显示,.,宽度超出值的长度时,:,右对齐显示,宽度前加负号,:,左对齐,.,对浮点数用超长宽度会怎样,?,试试,精度,:,指示浮点数值的小数位数,.,省略,:,按系统默认的小数位数显示,.,print “%f” % (math.pi),浮点数如何精确化,?,浮点数的机内表示是近似值,.,银行应用要求精确表示金额,故不宜用浮点数及浮点运算,.,解决办法,:,以“分”为单位,用整数表示金额,.,设金额是,x,分,输出时利用,x/100,和,x%100,分别得到“元”和“角分”,.,print “You have %d.%02d” % ,(x/100, x%100),02d:,不足,2,位用,0,填充,:,语句换行继续,字符串处理,文本数据,简单的字符串处理,字符串的机内表示,字符串和密码,格式化输出,文件处理,文件处理,文件,:,存储在磁盘上的数据序列,.,典型的文件结构,:,基本数据项,:,可为任何类型,若干数据项构成记录,若干记录构成文件,例如,:,学生基本数据项,:,学号,姓名,年龄,一个学生记录,:,学号,姓名,年龄,文件,:,全体学生记录,Lu Chaojun, SJTU,33,文本文件,文件中是文本数据,文本文件可视为存储在磁盘上的字符串,.,单行字符串,多行字符串,行尾,(EOL):,用特殊字符,如新行,(newline),字符,.,Python,用,n,表示新行字符,该字符在显示时被解释成新行字符,.,例,:,print “first line,n,second line”,34,文件处理,:,打开文件,程序不能直接与外存储器交互信息,必须通过内存进行交流,打开文件,:,将磁盘文件与一个程序变量关联,做好读写准备,., = open(,),: “r”,或“,w”,例如,infile = open(“myfile”, “r”),outfile = open(“myfile”, “w”),写打开时小心文件名,!,因为可能破坏现有文件,35,文件处理,:,读写文件,读文件,:,读出文件内容,.read(),:将整个文件作为一个字符串读入,.readline(),:读入一行,.readlines(),:读入所有行,点表示法,:,文件是对象,!,写文件,:,将新内容写入文件,.,.write(),若想写多行内容,需写入,n,36,文件处理,:,关闭文件,关闭文件,:,取消文件变量与磁盘文件的关联,.,.close(),关闭文件时,系统会将内存中文件内容输出到磁盘,.,Lu Chaojun, SJTU,37,将整个文件作为一个字符串,# file0.py,def main():,infile = open(encode.py, r),str = infile.read(),print str,infile.close(),main(),读入文件的前,5,行,# file1.py,def main():,infile = open(encode.py, r),for i in range(5):,str = infile.readline(),print str,infile.close(),main(),读入某个文件的所有行,# file3.py,def main():,infile = open(encode.py, r),for line in infile.readlines():,print line,infile.close(),main(),40,END,面向对象与图形编程,面向对象的思想,图形化编程,图形对象的使用,未知值的图形化处理,坐标系的选择,图形交互,图形模块介绍,43,43,43,数据与操作,:,传统观点,数据类型,某种值的集合,运算,(,操作,),的集合,计算就是对数据进行操作,数据与操作分离,数据是被动的,操作是主动的,例如,:string,类型的值是,abc,等,对串的操作有,+,*,len(),等,44,44,数据与操作,:,面向对象观点,对象,(,Object,):,集数据与操作于一身,.,对象知道一些信息,对象能对那些信息进行处理,计算,:,向对象发出请求操作的消息,.,主动的数据类型,面向对象,(,Object-Oriented,):,软件系统由各种对象组成,对象之间通过消息进行交互,.,现代软件系统几乎都是,OO,设计和实现,.,45,45,45,OO,基本概念,类,(,class,),:描述同类对象的共性,包含的数据:,任何类型的数据,甚至可以是对其他对象的引用,.,能执行的操作,(,方法,),对象,(,object,),:类的,实例,(,instance,),同类的不同对象可有不同的数据值,(,实例变量,),但能执行的操作是一样的,创建对象:使用类的,构造器,(,constructor,),初始化对象,(,,,),消息:请求对象执行它的方法,.(,,,),对象的方法,不同类型的对象当然提供不同的操作,对象一般都提供读取它的实例变量值的方法,统称为,accessor,。,例如,Point,对象的,getX(),和,getY(),,,Line,对象的,getP1(),和,getP2(),。,对象一般也提供修改其实例变量的方法,统称为,mutator,。,例如所有图形对象都有,move(dx,,,dy),方法。,46,面向对象与图形编程,面向对象的思想,图形化编程,图形对象的使用,未知值的图形化处理,坐标系的选择,图形交互,图形模块介绍,图形界面,命令行界面,通过输入一个个命令名字让计算机去做某项特定的工作。如,DOS,系统。,使用复杂,需要记住一个个命令。,图形用户界面,(GUI),利用窗口、图标、按钮和菜单等方式驱动程序的执行。如,window,系统。,使用方便,图形编程框架,现代编程语言大都提供图形化变成的工具,Python,有自带的,Tkinter,本书作者写的图形库:,graphics.py,放入文件夹:,Python26Libsite_packages,import graphics,或,from graphics import *,后者可使引用库函数更方便,49,面向对象与图形编程,面向对象的思想,图形化编程,图形对象的使用,未知值的图形化处理,坐标系的选择,图形交互,图形模块介绍,创建和关闭窗口,图形窗口,:,画图的地方,创建一个窗口对象,用,import graphics,win = graphics.GraphWin(),win = graphics.GraphWin(,窗口的名字,行像素数,列像素数,),用,from graphics import *,win = GraphWin(),win = GraphWin (,窗口的名字 ,行像素数,列像素数,),关闭窗口:,win.close(),51,图的内部表示,数字图像的表示:用像素,(pixel),表示,像素越多,质量越好。黑白图像的像素需要一个,bit,表示。如,1,表示白,,0,表示黑。如需要表示灰度和彩色,则需要多于,1,个,bit,。每个像素占用的,bit,越多,图像质量越好。,分辨率:图象中的像素数。图形库创建的窗口默认的分辨率是,200*200,图形对象的操作,小测验:窗口中有哪几类对象?,创建一个对象,各类对象的公共操作,将对象显示在窗口中:,draw,移动对象:,move,设置对象的填充颜色:,setFill,设置对象的边界颜色:,setOutline,点,点:图形窗口的一个像素,位置用坐标,(,x,,,y),表示。,坐标系统,原点,(0,,,0),:左上角,x,轴:自左向右,y,轴:自顶向下,小测试:默认大小的图形窗口,右下角坐标是,?,54,点(,续),创建,Point,类的对象,Point(,),例,:,p = Point(50,60),对,Point,对象的操作,求坐标:,p.getX(), p.getY(),在窗口中画自己:,p.draw(win),设置点的颜色:,p.setOutline(red),移动点:,p.move(dx, dy),55,线段,创建,Line,类的对象,Line(,),例如,l = Line(Point(0,0),Point(100,100),对,Line,对象的操作,在窗口中画自己,l.draw(win),56,圆形,创建,Circle,类的对象,Circle(,),例如,c = Circle(Point(50,50),40),对,Circle,对象的操作,填充颜色,c.setFill(red),在窗口中画自己,c.draw(win),57,椭圆,给定一个矩形框,创建一个内切,Oval,类的对象,Oval(,),例如,o = Oval(Point(20,150),Point(180,199),对,Oval,对象的操作,在窗口中画自己,o.draw(win),58,矩形,创建,Rectangle,类的对象,Rectangle(,),例如,r = Rectangle(Point(5,8),Point(30,40),对,Rectangle,对象的操作,在窗口中画自己,r.draw(win),59,多边形,创建,Polygon,类的对象,Polygon(,),例如,p = Polygon(Point(10,10), Point(30,30),Point(10,30),对,Polygon,对象的操作,在窗口中画自己,p.draw(win),60,文本,创建,Text,类的对象,t = Text(,),例如,t = Text(Point(99,99),”text here”),对,Text,对象的操作,在窗口中画自己,t.draw(win),重设字符串,t.setText(“new text”),61,实例:画两只眼睛,方法一:直接创建两个对象,leftEye = Circle(Point(80,50),5),leftEye.setFill(yellow),leftEye.setOutline(red),rightEye = Circle(Point(20,50),5),rightEye.setFill(yellow),rightEye.setOutline(red),62,利用对象复制,错误代码,leftEye = Circle(Point(80,50),5),leftEye.setFill(yellow),leftEye.setOutline(red),rightEye = leftEye,rightEye.move(20,50),Python,中图像对象的赋值是为对象取一个别名,而不是创建一个新对象,!,正确代码,leftEye = Circle(Point(80,50),5),leftEye.setFill(yellow),leftEye.setOutline(red),rightEye = Circle(Point(100,50),5),rightEye.setFill(yellow),rightEye.setOutline(red),更美观的代码,使用,clone(),复制对象,leftEye = Circle(Point(80,50),5),leftEye.setFill(yellow),leftEye.setOutline(red),rightEye = leftEye.clone(),rightEye.move(20,0),65,面向对象与图形编程,面向对象的思想,图形化编程,图形对象的使用,未知值的图形化处理,坐标系的选择,图形交互,图形模块介绍,编程实例,:,投资收益柱状图,用柱状图表示,10,年的投资收益,.,每年的收益是一个矩形。这些矩形有相同的宽度,但有不同的高度,67,算法,输入本金和年利率,创建图形窗口,确定比例:,1,原先对应的高度,每一年占用的宽度,窗口左边画上刻度,0,号位置画对应初始本金的矩形,高度为本金值,对接下来的,1,到,10,年,:,高度,principal = principal * (1 + apr),在相应位置画对应本利的矩形,进一步细化,确定图形窗口的尺寸:如果我们的显示器用的分辨率是,1024*768,,我们希望图形占四分之一的画面,则可以把分辨率定为,512*384,创建一个相应的窗口,创建,512*384,的图形窗口,标题为,Investment Growth Chart,Python,代码,win = GraphWin(Investment Growth Chart, 512, 384),69,进一步细化,(,续,),确定刻度的内容和位置,内容,:0.0K,,,2.5K,,,5.0K,,,7.5K,,,10.0K,位置,:,确定水平方向,30,像素为一年,从第,80,像素开始,;,垂直方向,5,个刻度,($10,000),平分,300,像素,即,70,像素为一档,.,算法精化,Draw label 0.0K at (20, 320),Draw label 2.5K at (20, 250),Draw label 5.0K at (20, 180),Draw label 7.5K at (20, 110),Draw label 10.0K at (20, 40),用,Text,函数实现,70,进一步细化,(,续,),确定,0,号柱子的位置和高度,位置,:,左下角坐标为,(20,,,320),高度,:,principal * (280 / 10000),,即右上角,y,坐标为,320 principal * (280 / 10000).,宽度,:,故右上角,x,坐标为,20 + 30 = 50,算法精化,0,号柱,:,从,(20,320),到,(50,320- principal*0.028,),画矩形,71,进一步细化,(,续,),其他柱子的位置和高度,位置,:,左下角为,(x, 320).,高度,:,principal*(280/10000),,则右上角,y,坐标为,320,principal*(280/10000).,宽度,:,30,,故右上角,x,坐标为,(,左下角,x,坐标,+30),算法精化,for year,从,1,到,10:,principal = principal * (1 + apr),x = 25 * year + 40,height = principal * 0.02,从,(x,230),到,(x + 25,230-height),画矩形,72,最后的程序(,graph,),from graphics import *,def main():,win = GraphWin(Investment Growth Chart, 512, 384),Text(Point(20, 320), 0.0K).draw(win),Text(Point(20, 250), 2.5K).draw(win),Text(Point(20, 180), 5.0K).draw(win),Text(Point(20, 110), 7.5K).draw(win),Text(Point(20, 40), 10.0K).draw(win),principal = input(enter initial principal:),apr = input(enter interest rate: ),bar = Rectangle(Point(70,320), Point(100, 320- principal*0.028),bar.setFill(green),bar.draw(win),x = 100,for year in range(1, 11):,principal = principal * (1 + apr),bar = Rectangle(Point(x,320), Point(x+30, 320- principal*0.028),bar.setFill(green),bar.draw(win),x = x + 30,raw_input(press any key to quit: ),win.close(),main(),面向对象与图形编程,面向对象的思想,图形化编程,图形对象的使用,未知值的图形化处理,坐标系的选择,图形交互,图形模块介绍,自定义坐标系,默认坐标系以像素为单位,编程很麻烦,.,坐标变换,:,实际数据需映射成窗口像素位置,.,Graphics,模块提供自定义坐标系的功能,使坐标变换自动完成,.,好处,编程简单直观,改变窗口像素尺寸对程序几乎没影响,76,自定义坐标系,setCoords(,左下角的新坐标,左下角的,y,坐标,右上角的,x,坐标,右上角的,y,坐标,),Python,自动进行新坐标系和像素之间的转换,例子,:,坐标系变换,例如,win = GraphWin(“Tic-Tac-Toe”),win.setCoords(0.0, 0.0, 3.0, 3.0),Line(Point(1,0), Point(1,3).draw(win),Line(Point(2,0), Point(2,3).draw(win),Line(Point(0,1), Point(3,1).draw(win),Line(Point(0,2), Point(3,2).draw(win),新坐标系为,:,左下角,(0,0),右上角,(3,3),系统自动把新坐标变换成,200*200,像素坐标,编程实例,:,柱状图的改进(,graph1,),Lu Chaojun, SJTU,78,graph1,将,x,坐标分为,13,份,从,0,到,13,将,y,坐标分成,6,份,从,0,到,6,X,坐标,1-2,是当年信息,,2-3,是一年后的信息,以此类推,Y,坐标,1,是,0,元,,2,是,2.5K,元,,3,是,5K,元,,from graphics import *,def main():,win = GraphWin(Investment Growth Chart, 512, 384),win.setCoords(0.0, 0.0, 13.0, 6.0),Text(Point(0.5,1), 0.0K).draw(win),Text(Point(0.5,2), 2.5K).draw(win),Text(Point(0.5,3), 5.0K).draw(win),Text(Point(0.5,4), 7.5K).draw(win),Text(Point(0.5,5), 10.0K).draw(win),principal = input(enter initial principal:),apr = input(enter interest rate: ),bar = Rectangle(Point(1,1), Point(2, 1 + principal*0.0004),bar.setFill(green),bar.draw(win),for year in range(1, 11):,principal = principal * (1 + apr),bar = Rectangle(Point(year+1, 1), Point(year + 2, 1 + principal*0.0004),bar.setFill(green),bar.draw(win),raw_input(press any key to quit: ),win.close(),main(),面向对象与图形编程,面向对象的思想,图形化编程,图形对象的使用,未知值的图形化处理,坐标系的选择,图形交互,图形模块介绍,图形交互界面,GUI,:图形元素用于输入输出,事件:移动鼠标,点击按钮,选菜单等,.,也是对象,事件发生后,有相应事件处理程序来处理,.,事件驱动的编程,捕获事件,处理事件:一段程序,82,捕获鼠标点击,GraphWin,类有一个方法,getMouse():,调用时等待用户点击,并返回点击位置,(,是个,Point,对象,).,例如,:,win = GraphWin(Click Me!),for i in range(10):,p = win.getMouse(),print You clicked (%d, %d) % (p.getX(), p.getY(),83,编程实例,:triangle.py,设计一个程序,用鼠标在窗口中任意点三个点,将这三个点连成一个三角形。,# Program: triangle.py,from graphics import *,def main():,win = GraphWin(Draw a Triangle),win.setCoords(0.0, 0.0, 10.0, 10.0),message = Text(Point(5, 0.5), Click on three points),message.draw(win),p1 = win.getMouse(),p1.draw(win),p2 = win.getMouse(),p2.draw(win),p3 = win.getMouse(),p3.draw(win),triangle = Polygon(p1,p2,p3),triangle.draw(win),message.setText(Click anywhere to quit.),win.getMouse(),main(),85,图形窗口中的文本输入,Entry,对象,:,提供一个可编辑文本的框,Entry(,),方法:,setText(),和,getText(),等,实例,:,温度转换,GUI,版,关键语句,input = Entry(Point(2,3), 5),input.setText(“0.0”),input.draw(win),celsius = eval(input.getText(),86,温度转换,GUI,版,创建一个名为“华氏到摄氏转换”的窗口,显示两个文本框:“华氏温度”和“摄氏温度”,设置一个输入框,用于输入华氏温度,计算摄氏温度,显示摄氏温度,输出提示,结束程序,# coding = gbk,# Program: fToC.py,from graphics import *,import string,def main():,win = GraphWin(u,华氏到摄氏的转换, 300, 300),Text(Point(50, 50), u,华氏温度,).draw(win),Text(Point(50, 150), u,摄氏温度,).draw(win),input = Entry(Point(200,50), 10),input.setText(“0.0),input.draw(win),output = Text(Point(200, 150), ),output.draw(win),win.getMouse(),fahrenheit = eval(input.getText(),celsius = 5.0 / 9 * (fahrenheit - 32),Text(Point(200, 150), str(celsius).draw(win),Text(Point(200, 250), Click anywhere to quit.).draw(win),win.getMouse(),win.close(),main(),面向对象与图形编程,面向对象的思想,图形化编程,图形对象的使用,未知值的图形化处理,坐标系的选择,图形交互,图形模块介绍,图形模块介绍,graphWin,对象,图形对象,Entry,对象,graphWin,对象,表示屏幕上的一个窗口,创建窗口,graphWin,关闭窗口,close,获取点击鼠标的位置,getMouse,设置坐标系,设置背景颜色,图形对象,图形对象有:,Point,、,Line,、,Circle,、,Rectangle,、,Oval,、,Polygon,、,Text,行为:创建对象、设置图形的位置、设置图形的填充颜色、设置图形的边界颜色等,Entry,对象,可编辑的文本框,行为:,创建文本框,设置文本框的内容,获取文本框的内容,END,
展开阅读全文