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()

python tkinter pack的参数有哪些_python

 当你创建一个按钮后,必须调用布局函数,不然无法显示,本文中调用的是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()

python tkinter pack的参数有哪些_ide_02

按钮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()

python tkinter pack的参数有哪些_qt_03

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()

python tkinter pack的参数有哪些_控件_04

 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在第一列占用两行,相应的第二行第一列就不能再放控件了

python tkinter pack的参数有哪些_python_05

 4. place函数

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