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