Tkinter控件管理方法一共有三种:分别是pack(),grid(),palce(),通过这三种方法布局,将窗体容器中各个控件(组件)调整到我们想要放置的位置。
1.pack布局
使用 pack布局,将向容器中添加组件,默认第一个添加的组件在最上方,然后是依次向下添加,从上往下类似于前端布局中的块级元素。
#创建三个 Label 分别添加到root窗体中
#Label是一种用来显示文字或者图片的组件
tk.Label(root,text = 'pack1',bg = 'red').pack(fill="x",side="right",ipadx=50,padx="20",)
tk.Label(root, text = 'pack2', bg = 'blue').pack(anchor="w",expand="yes")
tk.Label(root, text = 'pack3', bg = 'green').pack()
2.grid布局
grid布局又被称作网格布局,是最被推荐使用的布局。程序大多数都是矩形的界面,我们可以很容易把它划分为一个几行几列的网格,然后根据行号和列号,将组件放置于网格之中。使用grid 布局时,需要在里面指定两个参数,分别用row 表示行,column 表示列。需要注意的是 row 和 column 的序号都从0 开始。
#创建四个 Label 分别添加到root窗体中
#Label是一种用来显示文字或者图片的组件
tk.Label(root,text = '第一行-3',bg = 'red').grid(row=0,column=2,ipadx=20,ipady=10,)
tk.Label(root, text = '第二行-1', bg = 'blue').grid(row=1,column=0,rowspan=2,sticky="nw")
tk.Label(root, text = '第二行-2', bg = 'green').grid(row=1,column=1,ipadx=20,ipady=10,)
tk.Label(root, text = '第三行-1', bg = 'yellow').grid(row=2,column=0,columnspan=3,sticky="e")
3.place布局
最简单最灵活的一种布局,使用组件坐标来放置组件的位置。一般不推荐使用,除非在一些特定的情境下(比如需要精准坐标控制的)
#创建四个 Label 分别添加到root窗体中
#Label是一种用来显示文字或者图片的组件
tk.Label(root,text = '第一行-3',bg = 'red').place(relx=0.5, rely=0.5, anchor="center")
tk.Label(root, text = '第二行-1', bg = 'blue').place(x=0,y=0,relwidth=0.3,relheight=0.2)
tk.Label(root, text = '第二行-2', bg = 'green').place(x=50,y=50,height=50,width=100)
tk.Label(root, text = '第三行-1', bg = 'yellow').place(relx=0.7, rely=0.7,)