版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计与案例教程第11章图形用户界面设计1.Tkinter:Tkinter是一款流行的跨平台GUI工具包,是Python标准的GUI库下载地址:/topics/thinter2.wxPython下载地址:/download.php常用的GUI工具有Tkinter、wxPython、Jython、IronPython几种11.1图形用户界面设计基础
GUI程序的基础是根窗体(RootWindow)使用tkinter之前需要先导入,导入方式为:
import_tkinter然后再实例化tkinter模块的Tk类,如:
root=Tk()GUI元素被称为控件控件及类说
明Frame承载其他GUI元素Label显示不可编辑的文本或图片Button用户激活按钮时执行一个动作Entry接受并显示一行文本Text接受并显示多行文本Checkbutton允许用户选择或反选一个选项Radiobutton允许用户从多个选项中选取一个Menu与顶层窗口相关的选项Scrollbar滚动其他控件的滚动条Canvas图形绘图区:直线、圆、照片、文字等Dialog通用对话框的标记部分GUI核心窗口控件说明和其对应的tkinter类例:创建图形窗口1importtkinter2win=tkinter.Tk()3win.title(string="名言警句")4b=tkinter.Label(win,text="阅读使人充实,会谈使人敏捷,写作使人精确。—培根")5b.pack()6win.mainloop()11.2常用控件11.2.1tkinter控件tkinter模块包含15个tkinter控件控件名称说
明Button按钮控件;在程序中显示按钮Canvas画布控件;用来画图形,如线条、多边形等Checkbutton多选框控件;用于在程序中提供多项选择框Entry输入控件;定义一个简单的文字输入字段Frame框架控件;定义一个窗体,以作为其他控件的容器Label标签控件;定义一个文字或是图片标签Listbox列表框控件;此控件定义一个下拉方块Menu菜单控件;定义一个菜单栏、下拉菜单和弹出菜单Menubutton菜单按钮控件;用于显示菜单项Message消息控件;定义一个对话框Radiobutton单选按钮控件;定义一个单选按钮Scale范围控件;定义一个滑动条,来帮助用户设置数值Scrollbar滚动条控件;定义一个滚动条Text文本控件;定义一个文本框Toplevel与Frame控件类似,可以作为其他控件的容器1.颜色名称常量Windows操作系统的颜色名称常量SystemActiveBorderSystemActiveCaptionSystemAppWorkspaceSystemBackgroundSystemButtonFaceSystemButtonHighlightSystemButtonShadowSystemButtonTextSystemCaptionTextSystemDisabledTextSystemHighlightSystemHighlightTextSystemInavtiveBorderSystemInavtiveCaptionSystemInactiveCaptionTextSystemMenuSystemMenuTextSystemScrollbarSystemWindowSystemWindowFrameSystemWindowText2.大小的测量单位测量tkinter控件内大小时,是以像素为单位的例:实现定义Button控件的文字与边框之间的水平距离是20像素fromtkinterimport*win=Tk()Button(win,padx=20,text="关闭",command=win.quit).pack()win.mainloop()例:包含关闭按钮的图形界面1fromtkinterimport*2win=Tk()3Button(win,padx=20,text="关闭",command=win.quit).pack()4Button(win,padx="2c",text="关闭",command=win.quit).pack()5Button(win,padx="8m",text="关闭",command=win.quit).pack()6Button(win,padx="2i",text="关闭",command=win.quit).pack()7Button(win,padx="20p",text="关闭",command=win.quit).pack()8win.mainloop()3.共同属性每一个tkinter控件都有下列共同属性:anchor:定义控件在窗口内的位置或者文字信息在控件内的位置,位置可以是N、NE、E、SE、SW、W、NW或者CENTER。Background(bg):定义控件的背景颜色以及一个背景颜色为SystemHighlight的文字标签。bitmap:定义显示在控件内的bitmap图片文件。borderwidth:定义控件的边框宽度,单位是像素。command:当控件有特定的动作发生,此属性定义动作发生时所调用的Python函数。cursor:定义当鼠标指针移经控件上时鼠标指针的类型。font:如果控件支持标题文字,可以使用此属性来定义标题文字的字体格式。允许同时设置多个字体样式。
foreground(fg):定义控件的前景(文字)颜色。3.共同属性(9)height:如果是Button、Label或者Text控件,此属性定义以字符数目为单位的高度。对于其他的控件,则定义以像素(pixel)为单位的高度。(10)highlightbackground:定义控件在没有键盘焦点时,绘制highlight区域的颜色。(11)highlightcolor:定义控件在有键盘焦点时,绘制highlight区域的颜色。(12)highlightthickness:定义highlight区域的宽度,以像素为单位。(13)image:定义显示在控件内的图片文件。(14)ustify:定义多行的文字标题的排列方式。(15)padx,pady:定义控件内的文字或者图片与控件的边框之间的水平与垂直距离。(16)relief:定义控件的边框形式。(17)variable:将控件的数值映像到一个变量。(18)width:如果是Button、Label或者Text控件,此属性定义为以字符数目为单位的宽度。其他控件则定义为以像素(pixel)为单位的宽度。例:设置控件背景颜色。1fromtkinterimport*2win=Tk()3Label(win,background="#00ff00",text="曾伴浮云归晚翠,犹陪落日泛秋声。").pack()4Label(win,background="#00ff00",text="世间无限丹青手,一片伤心画不成。").pack()5win.mainloop()例:设置文字标签的字体。1fromtkinterimport*2win=Tk()3Label(win,font=("Times",16,"bold"),text="溯洄从之,道阻且长。溯游从之,宛在水中央。").pack()4Label(win,font=("细明体",24,"bolditalicunderline"),text="溯洄从之,道阻且长。溯游从之,宛在水中央。").pack()5win.mainloop()11.2.2Button控件Button控件用来创建按钮,按钮内可以显示文字或者图片。Button控件的方法:(1)
flash():将前景与背景颜色互换来产生闪烁的效果。(2)
invoke():执行command属性所定义的函数。Buttonwidget的属性如下:(1)
activebackground:当按钮在作用中时的背景颜色。(2)
activeforeground:当按钮在作用中时的前景颜色。(3)
bitmap:显示在按钮上的位图。(4)
default:如果设置此属性,则此按钮为默认按钮。(5)
disabledforeground:当按钮在无作用时的前景颜色。(6)
image:显示在按钮上的图片,此属性的顺序在text与bitmap属性之前。(7)
state:定义按钮的状态,可以是NORMAL、ACTIVE或者DISABLED。(8)
takefocus:定义用户是否可以使用Tab键,来改变按钮的焦点。(9)
text:显示在按钮上的文字。如果定义了bitmap或者image属性,text属性就不会被使用。(10)
underline:一个整数偏移值,表示按钮上的文字哪一个字符要加底线,第一个字符的偏移值是0。(11)
wraplength:一个以屏幕单位(screenunit)为单位的距离值,用来决定按钮上的文字在哪里需要换成多行。其默认值是不换行。例:文字上添加底线。1fromtkinterimport*2win=Tk()3Button(win,text="我的主页",underline=0,command=win.quit).pack()4win.mainloop()11.2.3Canvas控件Canvas控件用来创建与显示图形,如弧形、位图、图片、线条、椭圆形、多边形、矩形等。Canvas控件的方法如下:create_arc(coord,start,extent,fill):创建一个弧形。create_bitmap(x,y,bitmap):创建一个位图。create_image(x,y,image):创建一个图片。create_line(x0,y0,x1,y1,...,xn,yn,options):创建一个线条。例:绘制一个弧形,在窗口客户区的(10,50)与(240,210)坐标间画一个弧形,起始角度是0度,结束角度是270度,使用红色来填满弧形区块。1fromtkinterimport*2win=Tk()3coord=10,50,240,2104canvas=Canvas(win)5canvas.create_arc(coord,start=0,extent=270,fill="red")anvas.pack()6win.mainloop()例:绘制一个线条。1fromtkinterimport*2win=Tk()3canvas=Canvas(win)4canvas.create_line(10,10,40,120,230,270,width=3,fill="green")5canvas.pack()6win.mainloop()11.2.4Entry控件Entry控件用来在窗体或者窗口内创建一个单行的文本框。textvariable:此属性为用户输入的文字或者要显示在Entry控件内的文字。get():此方法可以读取Entrywidget内的文字。例:创建一个简单计算器。1fromtkinterimport*2win=Tk()3frame=Frame(win)#创建窗体45#创建一个表达式6defcalc():7result="="+str(eval(expression.get()))8label.config(text=result)910label=Label(frame) 11entry=Entry(frame) 12expression=StringVar() 13entry["textvariable"]=expression 141516button1=Button(frame,text=“等于",command=calc)17entry.focus() 18frame.pack()19entry.pack() 20label.pack(side=LEFT) 21button1.pack(side=RIGHT) 2223#开始程序循环24frame.mainloop()11.2.5Checkbutton控件Checkbutton控件用来创建复选框。Checkbutton控件的属性:onvalue,offvalue:设置Checkbutton控件的variable属性所指定的变量所要存储的数值。如果复选框没有被勾选,此变量的值为offvalue;如果复选框被勾选,此变量的值为onvalue。indicatoron:将此属性设置成0,可以将整个控件变成复选框。checkbutton控件的方法:select():选择复选框,并且设置变量的值为onvalue。flash():将前景与背景颜色互换来产生闪烁的效果。invoke():执行command属性所定义的函数。toggle():改变核取按钮的状态。如果核取按钮当前的状态是on,就改成off;反之亦然。例:创建3个复选框。1fromtkinterimport*2win=Tk()3check1=Checkbutton(win,text="苹果")4check2=Checkbutton(win,text="香蕉")5check3=Checkbutton(win,text="橘子")6check1.select()7check1.pack(side=LEFT)8check2.pack(side=LEFT)9check3.pack(side=LEFT)10win.mainloop()11.3对象的布局Tkinter提供grid、pack和place三种完全不同的布局管理类:(1)pack():将控件放置在父控件内之前,规划此控件在区块内的位置。(2)grid():将控件放置在父控件内之前,将此控件规划成一个表格类型的架构。(3)place():将控件放置在父控件内的特定位置。11.3.1pack()方法pack()方法的选项:expand:让控件使用所有剩下的空间。fill:此选项决定控件如何填满parcel的空间,可以是X、Y、BOTH或者NONE,此选项必须在expand等于1时才有作用。
ipadx,ipady:此选项与fill选项共同使用,来定义窗体内的控件与窗体边界之间的距离。
padx,pady:此选项定义控件之间的距离。此选项的单位是像素;也可以是其他测量单位,如厘米、英寸等。(5)side:此选项定义控件放置的位置,可以是TOP(靠上对齐)、BOTTOM(靠下对齐)、LEFT(靠左对齐)与RIGHT(靠右对齐)。11.3.2grid()方法grid()方法将控件依照表格的栏列方式来放置在窗体或者窗口内。grid()方法的选项:(1)row:设置控件在表格中的第几列。(2)column:设置控件在表格中的第几栏。(3)columnspan:设置控件在表格中合并栏的数目。(4)rowspan:设置控件在表格中合并列的数目。例:使用grid()方法创建一个5×5的按钮数组。1fromtkinterimport*2#主窗口3win=Tk()4#创建窗体5frame=Frame(win,relief=RAISED,borderwidth=2)6frame.pack(side=TOP,fill=BOTH,ipadx=5,ipady=5,expand=1)7#创建按钮数组8foriinrange(5):9forjinrange(5):10Button(frame,text="("+str(i)+","+str(j)+")").grid(row=i,column=j)11#开始窗口的事件循环12win.mainloop()11.3.3place()方法place()方法设置控件在窗体或者窗口内的绝对地址或者相对地址。place()方法的选项:anchor:定义控件在窗体或者窗口内的方位。
bordermode:定义控件的坐标是否要考虑边界的宽度。
height:定义控件的高度,单位是像素。
width:定义控件的宽度,单位是像素。
in(in_):定义控件相对于参考控件的位置。
relheight:定义控件相对于参考控件(使用in_选项)的高度。
relwidth:定义控件相对于参考控件(使用in_选项)的宽度。
relx:定义控件相对于参考控件(使用in_选项)的水平位移。
rely:定义控件相对于参考控件(使用in_选项)的垂直位移。
x:定义控件的绝对水平位置,默认值是0。
y:定义控件的绝对垂直位置,默认值是0。例:使用place()方法创建2个按钮。第1个按钮的位置在距离窗体左上角的(40,40)坐标处,第2个按钮的位置在距离窗体左上角的(140,80)坐标处。按钮的宽度是80个像素,按钮的高度是40个像素。1fromtkinterimport*2win=Tk()3frame=Frame(win,relief=RAISED,borderwidth=2,width=400,height=300)4frame.pack(side=TOP,fill=BOTH,ipadx=5,expand=1)5button1=Button(frame,text="Button1")6button1.place(x=40,y=40,anchor=W,width=80,height=40)7button2=Button(frame,text="Button2")8button2.place(x=140,y=80,anchor=W,width=80,height=40)9win.mainloop()11.4事件处理事件指可能会发生在对象上的事,要求有相应响应。11.4.1事件的属性当有事件发生时,tkinter会传给事件处理例程一个event变量。变量名属
性char键盘的字符码,例如A键的char属性等于A,F1键的char属性无法显示keycode键盘的ASCII码,例如A键的keycode属性等于65keysym键盘的符号,例如A键的keysym属性等于A,F1键的keysym属性等于F1height,width控件的新高度与宽度,单位是像素num事件发生时的鼠标按键码widget目前的鼠标光标位置x,y加载和表示字体x_root,y_root相对于屏幕左上角的目前鼠标光标位置type显示事件的种类11.4.2事件绑定方法用户可以使用以下tkinter控件的方法将控件与事件绑定起来:after(milliseconds[,callback[,arguments]])after_cancel(identifier)after_idle(callback,arguments)bindtags()bind(event,callback)bind_all(event,callback)bind_class(widgetclass,event,callback)
<Configure>unbind(event)unbind_all(event)
unbind_class(event)11.4.3系统协议协议处理例
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 上海工商职业技术学院《安装工程计价》2025-2026学年第一学期期末试卷(A卷)
- 肠痈的护理与家属沟通
- 上海工商职业技术学院《Android 移动平台开发》2025-2026学年第一学期期末试卷(A卷)
- 不限说课稿2025学年中职专业课-服装设计-服装设计与工艺-轻工纺织大类
- 上饶卫生健康职业学院《安全管理学》2025-2026学年第一学期期末试卷(A卷)
- 2026年小学设计教学楼手绘
- 上海音乐学院《安装工程施工》2025-2026学年第一学期期末试卷(A卷)
- 上海音乐学院《安全工程专业导论》2025-2026学年第一学期期末试卷(A卷)
- 上海音乐学院《Android 应用程序设计》2025-2026学年第一学期期末试卷(A卷)
- 上海震旦职业学院《安全管理学》2025-2026学年第一学期期末试卷(A卷)
- QCT 291-2023 汽车机械式分动器总成性能要求和台架试验方法 (正式版)
- 新人教版六年级下册数学计算题专项练习题及答案
- 南湖革命纪念馆
- 卸车软管耐压试验操作规程
- 血液透析上下机正规操作
- 酚酸类的天然物质
- 危重患者微量泵泵入药物的配置方法
- Graves眼病的诊断与治疗
- 大学生化学实验竞赛试题及答案完整版
- GB/T 8350-2008输送链、附件和链轮
- GB 18218-2018危险化学品重大危险源辨识
评论
0/150
提交评论