grid布局管理器详解

tkinter提供了三种管理器, pack, grid, place. 帮助我们组织, 管理在父组件中子组件的布局方式

grid布局管理器

grid表格布局, 采用表格结构组织组件, 子组件的位置由行和列单元格确定, 并且可以跨行和跨列, 从而实现复杂的布局

                                                                                                                                             grid方法提供的选项

选项 说明 取值范围
column 单元格的列号 从零开始的正整数
columnspan 跨列,跨越的列数 正整数
row 单元格的列号 从零开始的正整数
rowspan 跨行,跨越的行数 正整数
ipadx, ipady 设置子组件之间的间隔, x或y方向, 默认单位为像素 非负浮点数,默认为0.0
padx, pady 与之并列的组件之间的间隔, x或y方向, 默认单位为像素 非负浮点数,默认为0.0
sticky 组件紧贴所在单元格的某一角,对应东西南北中以及四个角 N  W  S  E  NW  NE  SE  WE
 1 # coding:utf-8
 2 from tkinter import *
 3 from tkinter import messagebox
 4 import random
 5 
 6 
 7 class Application(Frame):
 8     """一个经典的GUI程序类写法"""
 9     def __init__(self, master=None):
10         super().__init__(master)          # super代表的是父类的定义,而不是父类的对象
11         self.master = master
12         self.pack()
13         self.createWidget()
14 
15     def createWidget(self):
16         self.label01 = Label(self, text='用户名')
17         self.label01.grid(row=0, column=0)
18         self.entry01 = Entry(self)
19         self.entry01.grid(row=0, column=1)
20         Label(self, text='用户名为手机号').grid(row=0, column=2)
21         Label(self, text='密码').grid(row=1, column=0)
22         Entry(self, show='*').grid(row=1, column=1)
23         Button(self, text='登录').grid(row=2, column=1, sticky=EW)
24         Button(self, text='取消').grid(row=2, column=2, sticky=E)
25 
26 
27 if __name__ == "__main__":
28     root = Tk()
29     root.geometry("400x350+200+300")
30     root.title('canvas')
31     app = Application(master=root)
32     root.mainloop()