Python GUI tkinter库 自学11

Grid 布局管理器详解

  • 1、一个经典的面向程序写法模块
  • 2、布局管理器讲解(grid)
  • 3、布局管理器代码(grid)
  • 4、源代码

1、一个经典的面向程序写法模块

from tkinter import *
from tkinter import messagebox
# 导入库文件

class Appication(Frame):
    """
    一个经典的 GUI 类的写法
    """
    # 定义类(Appication)、继承于 Frame 框架 (虚拟的矩形框架)
    def __init__(self, master = None):
        # 定义构造函数、并初始化父类为空
        super().__init__(master)
        # 通过 super() 调用父类、并将 master 传进去
        self.master = master
        # 令此类中的 master 等于传入的 window
        self.pack()
        # 布局此窗口

        self.CreateWidget()
        # 调用另一个函数 CreateWidget

    def CreateWidget(self):
        """
        用途:创建组件
        """
        ......
        ......
       

if __name__ == "__main__":
    window = Tk()
    # 创建主窗口
    window.geometry("500x200+200+200")
    window.title('一个经典的GUI程序')
    # 对窗口进行大小、位置及名字设置

    app = Appication(master = window)
    # 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去

    window.mainloop()
    # 调用 mainloop 方法、启用窗口并进入事件循环

2、布局管理器讲解(grid)

grid 布局管理器

  1. grid 表格布局,采用表格结构组织构件
  2. 子组件的位置由行和列的单元格来确定
  3. 并且可以跨行和跨列,从而实现复杂的布局
选项 说明 取值范围
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" 等

3、布局管理器代码(grid)

# class Appication(Frame):
#     """
#     一个经典的 GUI 类的写法
#     """
    def CreateWidget(self):
        """
        用途:创建组件
        """
        # 对于 grid 布局管理器、row 代表行号、column 代表列号 (均是从 0 开始)
        self.label1 = Label(self, text = "用户名")
        # 创建 label1 标签与文本 "用户名" 绑定
        self.label1.grid(row = 0, column = 0)
        # 布局标签 label1
        self.entry1 = Entry(self)
        # 创建 entry1 单行文本框
        self.entry1.grid(row = 0, column = 1)
        # 布局entry1 单行文本框
        Label(self, text = "用户名为手机号").grid(row = 0, column = 2)
        # 创建标签与文本 "用户名为手机号" 绑定并且进行布局

        Label(self, text = "密码").grid(row = 1, column = 0)
        # 创建标签与文本 "密码" 绑定并且进行布局
        Entry(self, show = "*").grid(row = 1, column = 1)
        # 创建单行文本框 (以暗文方式展示) 并且进行布局

        # sticky 代表组件紧贴在单元格的某一角
        Button(self, text = "登录").grid(row = 2, column = 1, sticky = EW)
        # 创建按钮与文本 "登录" 绑定并且进行布局
        Button(self, text = "取消").grid(row = 2, column = 2, sticky = E)
        # 创建按钮与文本 "取消" 绑定并且进行布局

4、源代码

from tkinter import *
from tkinter import messagebox
import random
# 导入库文件


class Appication(Frame):
    """
    一个经典的 GUI 类的写法
    """
    def __init__(self, master = None):
        # 定义构造函数、并初始化父类为空
        super().__init__(master)
        # 通过 super() 调用父类、并将 master 传进去
        self.master = master
        # 令此类中的 master 等于传入的 window
        self.pack()
        # 布局此窗口

        self.CreateWidget()
        # 调用另一个函数 CreateWidget

    def CreateWidget(self):
        """
        用途:创建组件
        """
        # 对于 grid 布局管理器、row 代表行号、column 代表列号 (均是从 0 开始)
        self.label1 = Label(self, text = "用户名")
        # 创建 label1 标签与文本 "用户名" 绑定
        self.label1.grid(row = 0, column = 0)
        # 布局标签 label1
        self.entry1 = Entry(self)
        # 创建 entry1 单行文本框
        self.entry1.grid(row = 0, column = 1)
        # 布局entry1 单行文本框
        Label(self, text = "用户名为手机号").grid(row = 0, column = 2)
        # 创建标签与文本 "用户名为手机号" 绑定并且进行布局

        Label(self, text = "密码").grid(row = 1, column = 0)
        # 创建标签与文本 "密码" 绑定并且进行布局
        Entry(self, show = "*").grid(row = 1, column = 1)
        # 创建单行文本框 (以暗文方式展示) 并且进行布局

        # sticky 代表组件紧贴在单元格的某一角
        Button(self, text = "登录").grid(row = 2, column = 1, sticky = EW)
        # 创建按钮与文本 "登录" 绑定并且进行布局
        Button(self, text = "取消").grid(row = 2, column = 2, sticky = E)
        # 创建按钮与文本 "取消" 绑定并且进行布局


if __name__ == "__main__":
    window = Tk()
    # 创建主窗口
    window.geometry("600x600+100+100")
    window.title('一个经典的GUI程序')
    # 对窗口进行大小、位置及名字设置

    app = Appication(master = window)
    # 调用新创建的类、并进行初始化、将 master = window (主窗口)传递进去

    window.mainloop()
    # 调用 mainloop 方法、启用窗口并进入事件循环

你可能感兴趣的:(Python,GUI,tkinter,库,gui,wxpython,tkinter)