Python Tkinter grid() 方法

Python Tkinter grid() 方法

Python Tkinter中,GUI组件的布局管理尤为重要。其中,grid()方法是一种常用的布局方式,它可以将组件分成网格状的布局,并能够根据具体的需求来分配布局的行列大小。

1. grid()方法的基本使用

使用grid()方法布局界面需要注意以下几点:

  • grid()方法会将组件分成网格状的布局。
  • 所有组件的行列位置都是从0开始计算的。
  • 可以通过rowspan和columnspan来合并网格,实现外观更加复杂的布局。

下面是一个示例代码,演示使用grid()方法来布局一个简单的GUI界面:

from tkinter import *

root = Tk()

# 创建标签和文本框
label_1 = Label(root, text="姓名")
label_2 = Label(root, text="密码")
entry_1 = Entry(root)
entry_2 = Entry(root)

# 将标签和文本框分布在一个网格中
label_1.grid(row=0, sticky=E)   # sticky=E,表示标签的位置在东部(右边)
label_2.grid(row=1, sticky=E)
entry_1.grid(row=0, column=1)   # 在第1列,第0行显示文本框
entry_2.grid(row=1, column=1)   # 在第1列,第1行显示文本框

# 创建复选框和按钮
check_box = Checkbutton(root, text="记住密码")
button = Button(root, text="登录")

# 将复选框和按钮分布在一个网格中,同时合并了行和列
check_box.grid(row=2, columnspan=2, sticky=W)
button.grid(row=3, columnspan=2, sticky=N+E+S+W)

root.mainloop()

2. grid()方法的常用属性

下面介绍一些常用的grid()方法的属性和说明:

属性 说明
row 组件所在的行数,从0开始计数。
column 组件所在的列数,从0开始计数。
rowspan 组件占据的行数。
columnspan 组件占据的列数。
sticky 组件在所在的单元格中的位置,可选值为N(上)、E(右)、S(下)、W(左)、NE(右上方)、NW(左上方)、SE(右下方)、SW(左下方)。

3. grid()方法的案例

下面举几个实际案例来说明grid()方法的使用。

3.1. 网格状布局窗口界面

from tkinter import *

root = Tk() 
root.title("网格状布局窗口界面")

# 布局组件
Label(root, text="用户名").grid(row=0)
Label(root, text="密码").grid(row=1)

Entry(root).grid(row=0, column=1)
Entry(root, show="*").grid(row=1, column=1)

Button(root, text="登录").grid(row=2, column=1, sticky=E)

root.mainloop()

3.2. 网格状布局自适应窗口

from tkinter import *

class Login(Frame):
    def __init__(self, parent):
        Frame.__init__(self, parent)
        self.parent = parent

        self.initUI()

    def initUI(self):
        self.parent.title("自适应网格状布局窗口")

        # 布局组件
        Label(self.parent, text="用户名").grid(row=0, sticky=W, padx=4)
        Label(self.parent, text="密码").grid(row=1, sticky=W, padx=4)

        Entry(self.parent).grid(row=0, column=1, padx=4)
        Entry(self.parent, show="*").grid(row=1, column=1, padx=4)

        Button(self.parent, text="登录").grid(row=2, column=1, sticky=E, padx=4)

        # 窗口自适应
        self.parent.rowconfigure(0, weight=1)
        self.parent.rowconfigure(1, weight=1)
        self.parent.rowconfigure(2, weight=1)
        self.parent.columnconfigure(0, weight=1)
        self.parent.columnconfigure(1, weight=1)

root = Tk()
app = Login(root)

# 将窗口自适应到屏幕大小
root.geometry("{}x{}".format(root.winfo_screenwidth()-200, root.winfo_screenheight()-200))

root.mainloop()

结论

Python Tkinter中,grid()方法是一种常用的布局方式。使用它能够方便地将界面分成网格状的布局,并根据实际需求来分配行列大小。同时,还可以通过添加rowspan和columnspan来实现更加复杂的外观布局。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程