通过上一篇笔记我们知道pack 只是适用于简单的垂直或水平排布,而现实应用场景中大多数是要实现表格排布的。譬如:最常见的用户登录页面。
Python提供了grid表格布局管理器实现此类常见的应用场景。
下面我们就以用户登录页面为案例进行分析,如何使用grid表格布局。
【1】主函数调用主窗口程序
import tkinter as ti
if __name__ == '__main__':
root = ti.Tk() # 通过类 Tk 的无参构造函数,创建应用程序主窗口对象
root.title("grid布局管理-用户登录") # 设置主窗口名称
# 宽度 400,高度 150;距屏幕左边 200,距屏幕上边240
root.geometry( "400x150+200+240")
app = Application(master=root) # 调用布局对象
root.mainloop() # 调用组件的 mainloop 方法,进入事件循环
上面的代码中,有下面几点需要注意:
- “__name__ == '__main__'”这是后面写Python程序的通用调用方式;
- Python IDE中会提示:Undefined name 'Application'
【2】定义类:Application
class Application(ti.Frame):
# 类的初始化
def __init__(self, master= None):
super().__init__(master) # super()代表的是父类的定义,而不是父类对象
self.master = master
self.pack()
self.createWidget() # 调用grid布局方法
# grid布局方法
def createWidget(self):
self.label01 = ti.Label(self,text="用户名") # 用户名标签
self.label01.grid(row=0,column=0)
self.entry01 = ti.Entry(self)
self.entry01.grid(row=0,column=1)
ti.Label(self,text="用户名为手机号").grid(row=0,column=2)
ti.Label(self, text="密码").grid(row=1, column=0)
ti.Entry(self, show= "*").grid(row=1, column=1)
ti.Button(self, text="登录").grid(row=2, column=1, sticky="EW")
ti.Button(self, text="取消").grid(row=2, column=2, sticky="E")
将上面两段代码融合后执行,效果见图:
在文本框中可以实现文本输入:
总结
通过案例的分解与实现,我们可以看到grid布局管理器是通过grid()方法来实现的。我们于此对grid()方法的各个选项做个汇总。如下: