PythonGUI之tkinter布局管理教程_第1页
PythonGUI之tkinter布局管理教程_第2页
PythonGUI之tkinter布局管理教程_第3页
PythonGUI之tkinter布局管理教程_第4页
PythonGUI之tkinter布局管理教程_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第PythonGUI之tkinter布局管理教程目录pack常用属性pack类提供了下列函数(使用组件实例对象调用)grid属性设置grid类提供了下列函数(使用组件实例对象调用)place属性设置place类提供了下列函数(使用组件实例对象调用)所谓布局,就是指控制窗体容器中各个控件(组件)的位置关系。

tkinter共有三种几何布局管理器,分别是:

pack布局grid布局place布局

pack布局

使用pack布局,将向容器中添加组件,第一个添加的组件在最上方,然后是依次向下添加。

fromtkinterimport*

root=Tk()

#创建三个Label分别添加到root窗体中

#Label是一种用来显示文字或者图片的组件

Label(root,text='pack1',bg='red').pack()

Label(root,text='pack2',bg='blue').pack()

Label(root,text='pack3',bg='green').pack()

root.mainloop()

如图:

pack常用属性

属性名属性简析取值取值说明fill设置组件是否向水平或垂直方向填充X、Y、BOTH和NONEfill=X(水平方向填充)fill=Y(垂直方向填充)fill=BOTH(水平和垂直)NONE不填充expand设置组件是否展开,当值为YES时,side选项无效。组件显示在父容器中心位置;若fill选项为BOTH,则填充父组件的剩余空间。默认为不展开YES、NO(1、0)expand=YESexpand=NOside设置组件的对齐方式LEFT、TOP、RIGHT、BOTTOM值为左、上、右、下ipadx、ipady设置x方向(或者y方向)内部间隙(子组件之间的间隔)可设置数值,默认是0非负整数,单位为像素padx、pady设置x方向(或者y方向)外部间隙(与之并列的组件之间的间隔)可设置数值,默认是0非负整数,单位为像素anchor锚选项,当可用空间大于所需求的尺寸时,决定组件被放置于容器的何处N、E、S、W、NW、NE、SW、SE、CENTER(默认值为CENTER)表示八个方向以及中心

注意:上表中取值都是常量,YES等价于yes,亦可以直接传入字符串值。另外当界面复杂度增加时,要实现某种布局效果,需要分层来实现。

fromtkinterimport*#注意模块导入方式,否则代码会有差别

classApp:

def__init__(self,master):

#使用Frame增加一层容器

fm1=Frame(master)

#Button是一种按钮组件,与Label类似,只是多出了响应点击的功能

Button(fm1,text='Top').pack(side=TOP,anchor=W,fill=X,expand=YES)

Button(fm1,text='Center').pack(side=TOP,anchor=W,fill=X,expand=YES)

Button(fm1,text='Bottom').pack(side=TOP,anchor=W,fill=X,expand=YES)

fm1.pack(side=LEFT,fill=BOTH,expand=YES)

fm2=Frame(master)

Button(fm2,text='Left').pack(side=LEFT)

Button(fm2,text='ThisistheCenterbutton').pack(side=LEFT)

Button(fm2,text='Right').pack(side=LEFT)

fm2.pack(side=LEFT,padx=10)

root=Tk()

root.title("Pack-Example")

display=App(root)

root.mainloop()

如上,创建一个Frame容器fm1,将三个垂直排列的Button组件使用pack布局放入fm1容器中,然后创建fm2容器,同样将三个水平排列的Button组件放入,最后将两个Frame容器当做组件,使用pack布局放入根窗体容器中。

如此分层布局,实现了相对复杂一些的界面需求。

pack类提供了下列函数(使用组件实例对象调用)

函数名描述pack_slaves()以列表方式返回本组件的所有子组件对象。pack_configure(option=value)给pack布局管理器设置属性,使用属性(option)=取值(value)方式设置propagate(boolean)设置为True表示父组件的几何大小由子组件决定(默认值),反之则无关。pack_info()返回pack提供的选项所对应得值。pack_forget()Unpack组件,将组件隐藏并且忽略原有设置,对象依旧存在,可以用pack(option,),将其显示。location(x,y)x,y为以像素为单位的点,函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1,-1)表示不在其中size()返回组件所包含的单元格,揭示组件大小。

grid布局

grid布局又被称作网格布局,是最被推荐使用的布局。程序大多数都是矩形的界面,我们可以很容易把它划分为一个几行几列的网格,然后根据行号和列号,将组件放置于网格之中。使用grid布局时,需要在里面指定两个参数,分别用row表示行,column表示列。需要注意的是row和column的序号都从0开始。

如下图,假设将界面分成网格。

grid属性设置

属性名属性简析取值取值说明row、columnrow为行号,column为列号,设置将组件放置于第几行第几列取值为行、列的序号,不是行数与列数row和column的序号从0开始,但是,column的默认值是0,row的默认值是下一个编号较大的未占用行号sticky设置组件在网格中的对齐方式(前提是有额外的空间)N、E、S、W、NW、NE、SW、SE类似于pack布局中的锚选项rowspan组件所跨越的行数默认值为1取值为跨越占用的行数,而不是序号columnspan组件所跨越的列数默认值为1取值为跨越占用的列数,而不是序号ipadx、ipady、padx、pady组件的内部、外部间隔距离,与pack的该属性用法相同同pack同pack

grid类提供了下列函数(使用组件实例对象调用)

函数名描述grid_slaves()以列表方式返回本组件的所有子组件对象。grid_configure(option=value)给pack布局管理器设置属性,使用属性(option)=取值(value)方式设置grid_propagate(boolean)设置为True表示父组件的几何大小由子组件决定(默认值),反之则无关。grid_info()返回pack提供的选项所对应得值。grid_forget()Unpack组件,将组件隐藏并且忽略原有设置,对象依旧存在,可以用pack(option,),将其显示。grid_location(x,y)x,y为以像素为单位的点,函数返回此点是否在单元格中,在哪个单元格中。返回单元格行列坐标,(-1,-1)表示不在其中size()返回组件所包含的单元格,揭示组件大小。

place布局。

最简单最灵活的一种布局,使用组件坐标来放置组件的位置。但是不太推荐使用,在不同分辨率下,界面往往有较大差异。

place属性设置

属性名属性简析取值取值说明anchor锚选项,同pack布局默认值为NW同pack布局x、y组件左上角的x、y坐标整数,默认值0绝对位置坐标,单位像素relx、rely组件相对于父容器的x、y坐标0~1之间浮点数相对位置,0.0表示左边缘(或上边缘),1.0表示右边缘(或下边缘)width、height组件的宽度、高度非负整数单位像素relwidth、relheight组件相对于父容器的宽度、高度0~1之间浮点数与relx(rely)取值相似

bordermode如果设置为INSIDE,组件内部的大小和位置是相对的,不包括边框;如果是OUTSIDE,组件的外部大小是相对的,包括边框INSIDE、OUTSIDE(默认值INSIDE)可以使用常量INSIDE、OUTSIDE,也可以使用字符串形式inside、outside

place类提供了下列函数(使用组件实例对象调用)

函数名描述place_slaves()以列表方式返回本组件的所有子组件对象。place_configure(option=value)给pack布局管理器设置属性,使用属性(option)=取值(value)方式设置propagate(boolean)设置为True表示父组件的几何大小由子组件决定(默认值),反之则无关。place_info()返回pack提供

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论