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/pady | padx=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=0 | row=0,column=1 | row=0,column=2 | ............. | row=0,column=n |
......... | ......... | ................... | .......... | ........ |
row=n,column=0 | row=n,column=1 | row=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,其计算控件位置不方便。
本文含有隐藏内容,请 开通VIP 后查看