tkinter制作GUI---第三章:窗口控件布局管理

1.开发GUI界面会用到很多控件,这个控件如何摆放,如何布局,是一个重要的问题,这一章就来学习布局管理。 布局主要用到三个方法pack,grid,place。

2.pack方法

先看一个例子:

from tkinter import *

root = Tk()
root.title('这是我的标题')
root.geometry('200x200')
bt1=Button(root,text='按钮1')
bt2=Button(root,text='按钮2')

bt1.pack()
bt2.pack()

root.mainloop()

 当你创建一个按钮后,必须调用布局函数,不然无法显示,本文中调用的是pack函数,当pack函数没有传入参数时,它会有一个默认值,从运行结果上看,是从上往下排列。下面给一个表格说明pack函数常用的参数。

参数取值含义
side

TOP:这是默认值,从上往下排列

BOTTOM:由下往上排列

LEFT:由左往右排列

RIGHT:由右往左排列

fill

fill=X

fill=Y

fill=BOTH

fill=NONE:默认值

fill参数用来告诉pack函数,控件填满所分配容器区间的方式,X表示沿着X轴填满父控件
padx/padypadx=5,值为数值表示该控件边界在x方向或者y方向与其他相邻边界的距离
ipadx/ipady数值表示控件中文字与该控件边界的距离
anchor

anchor=NW:左上

anchor=N:上

anchor=NE:右上

anchor=W:左

anchor=CENTER:中间

anchor=E:右

anchor=SW:左下

anchor=S:下

anchor=SE:右下

设置控件在窗口中的位置
expand默认是False设置控件是否填满额外的父容器控件

啥都没有实例好用,

2.1 side=BOTTOM,

from tkinter import *
root = Tk()
root.title('这是我的标题')
root.geometry('200x200')
bt1=Button(root,text='按钮1')
bt2=Button(root,text='按钮2')

bt1.pack(side=BOTTOM)
bt2.pack(pady=5,ipadx=20)
root.mainloop()

按钮1按照从下往上排,按钮2默认从上往下。

2.2 fill=X,

from tkinter import *
root = Tk()
root.title('这是我的标题')
root.geometry('200x200')
bt1=Button(root,text='按钮1',bg='red')
bt2=Button(root,text='按钮2',bg='yellow')

bt1.pack(side=BOTTOM,fill=X)
bt2.pack(pady=5,ipadx=20)
root.mainloop()

2.3 expand=True,注意expand要与fill共同协作才有效果,可以自己任意组合测试。

from tkinter import *
root = Tk()
root.title('这是我的标题')
root.geometry('200x200')
bt1=Button(root,text='按钮1',bg='red')
bt2=Button(root,text='按钮2',bg='yellow')

bt1.pack(side=BOTTOM,fill=BOTH,expand=True)
bt2.pack(pady=5,ipadx=20)
root.mainloop()

 2.4 anchor参数实际上是把控件往窗口的东南西北中,以及斜方向的位置放置。可以与side共同搭配使用。

3. grid方法

该方法是以网格的方式来放置控件,一个网格放一个控件,或者两个网格放一个控件。

参数取值用法
row设置控件所在的行
column设置控件在哪一列
padx/pady控件边界间的间距
rowspan设置控件所占用的行数,注意:占用几行与在哪一行区别,比如,一个按钮放置在第一行,但它占用两行,那么此时第一行和第二行会被合并一行。
columnspan同上
sticky类似anchor,但只能取N,S,W,E

下面继续用一个表格说明控件的位置:

row=0,column=0row=0,column=1row=0,column=2.............row=0,column=n
.......................................................
row=n,column=0row=n,column=1row=n,column=2............row=n,column=n
from tkinter import *
root = Tk()
root.title('这是我的标题')
root.geometry('200x200')
bt1=Button(root,text='按钮1')
bt2=Button(root,text='按钮2')
bt3=Button(root,text='按钮3')
bt4=Button(root,text='按钮4')

bt6=Button(root,text='按钮6')
bt1.grid(row=0,column=0)
#rowspan=2,padx=5表示按钮2在第一列占用两行,相应的第二行第一列就不能再放控件了
bt2.grid(row=0,column=1,rowspan=2,padx=5)
bt3.grid(row=0,column=2)
bt4.grid(row=1,column=0)
bt6.grid(row=1,column=2)
root.mainloop()

#rowspan=2,padx=5表示按钮2在第一列占用两行,相应的第二行第一列就不能再放控件了

 4. place函数

place函数通过定位的方式设置控件的位置,参数有:x,y,height,weight等,一般不建议使用place,其计算控件位置不方便。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值