布局管理器
一个GUI 应用程序必然有大量的组件,这些组件如何排布?这时候,就需要使用tkinter提供的布局管理器帮助我们组织、管理在父组件中子组件的布局方式。tkinter 提供了三种管理器:pack、grid、place
。
grid
布局管理器
grid
表格布局,采用表格结构组织组件。子组件的位置由行和列的单元格来确定,并且可以跨行和跨列,从而实现复杂的布局。
grid()方法提供的选项
选项项 | 说明 | 取值范围 |
---|---|---|
column |
单元格的列号 | 从0 开始的正整数 |
columnspan |
跨列,跨越的列数 | 正整数 |
row |
单元格的行号 | 从0 开始的正整数 |
rowspan |
跨行,跨越的行数 | 正整数 |
ipadx, ipady |
设置子组件之间的间隔,x 方向或者y 方向,默认单位为像素 | 非负浮点数,默认0.0 |
padx, pady |
与之并列的组件之间的间隔,x 方向或者y 方向,默认单位是像素 | 非负浮点数,默认0.0 |
sticky |
组件紧贴所在单元格的某一角,对应于东南西北中以及4 个角 | “n”, “s”, “w”, “e”,“nw”, “sw”, “se”,“ne”, “center”(默认) |
示例 grid 布局用法-登录界面设计
from tkinter import *
from tkinter import messagebox
import random
class Application(Frame):
def __init__(self, master=None):
super().__init__(master) # super()代表的是父类的定义,而不是父类对象
self.master = master
self.pack()
self.createWidget()
def createWidget(self):
"""通过grid 布局实现登录界面"""
self.label01 = Label(self,text="用户名")
self.label01.grid(row=0,column=0)
self.entry01 = Entry(self)
self.entry01.grid(row=0,column=1)
Label(self,text="用户名为手机号").grid(row=0,column=2)
Label(self, text="密码").grid(row=1, column=0)
Entry(self, show="*").grid(row=1, column=1)
Button(self, text="登录").grid(row=2, column=1, sticky=EW)
Button(self, text="取消").grid(row=2, column=2, sticky=E)
if __name__ == '__main__':
root = Tk()
root.geometry