Tkinter grid() 布局

Tkinter grid() 布局

grid() 方法将控件依照表格的行列方式,来放置在窗体或窗口内。

grid 会自动根据所有组件的大小来计算其网格的大小。

1. grid()方法参数选项

1) row

此选项设置控件在表格中的第几列。

2) column

此选项设置控件在表格中的第几栏。

3) columnspan

此选项设置控件在表格中合并栏的数目。

4) rowspan

此选项设置控件在表格中合并列的数目。

2. grid()方法应用实例

下面的示例是使用 grid() 方法创建一个 5×5 的按钮数组。

#grid()方法
from tkinter import *
#主窗口
win = Tk()
#创建窗体
frame = Frame (win, relief=RAISED, borderwidth=2)
frame.pack (side=TOP, fill=BOTH, ipadx=5, ipady=5, expand=1)

#创建按钮数组
for i in range (5):
    for j in range (5):
        Button (frame, text=" (" + str(i) + ","+ str(j)+ ")") .grid(row=i,column=j )
#开始窗口的事件循环
win.mainloop()

示例代码分析如下:

  • 第 6 行:创建一个 Frame 控件,以作为窗体。此窗体的外形突起,边框厚度为 2 像素。
  • 第 7 行:此窗体在窗口的顶端(side=TOP),当窗口改变大小时,窗体会占满整个窗口的剩余空间(fill=BOTH)。控件与窗体边界之间的水平距离是 5 像素,垂直距离是 5 像素。
  • 第 13~12 行:创建一个按钮数组,按钮上的文字是(row, column)。str(i) 是将数字类型的变量 i 转换为字符串类型。str(j) 是将数字类型的变量 j 转换为字符串类型。

 

from tkinter import *

master = Tk()
master.geometry('300x300')
e1 = Button(master,text='First',height=2,width=7,fg='red')
e2 = Button(master,text='Second',height=3,width=13,fg='blue')
e1.grid(row=0, column=0)
e2.grid(row=0, column=1)

mainloop()

from tkinter import *
import time

t = Tk()
t.title('与python聊天中')

  #创建frame容器
frmLT = Frame(width=500, height=320, bg='white')
frmLC = Frame(width=500, height=150, bg='red')
frmLB = Frame(width=500, height=30, bg='blue')
frmRT = Frame(width=200, height=500, bg='yellow')

frmLT.grid(row=0, column=0)
frmLC.grid(row=1, column=0)
frmLB.grid(row=2, column=0)
frmRT.grid(row=0, column=1, rowspan=3)
mainloop()

import tkinter as tk

window = tk.Tk()
# 设置窗口大小
winWidth = 600
winHeight = 400
# 获取屏幕分辨率
screenWidth = window.winfo_screenwidth()
screenHeight = window.winfo_screenheight()

x = int((screenWidth - winWidth) / 2)
y = int((screenHeight - winHeight) / 2)

# 设置主窗口标题
window.title("Grid参数说明")
# 设置窗口初始位置在屏幕居中
window.geometry("%sx%s+%s+%s" % (winWidth, winHeight, x, y))
# 设置窗口图标
window.iconbitmap("./favicon.ico")
# 设置窗口宽高固定
window.resizable(0, 0)

frame = tk.Frame(window)
frame.place(rely=.5, relx=0.5, x=-122.5, y=-100, width=245, height=200)
# 返回参数信息
print(frame.place_info())

tk.Label(frame, text="用户名").grid(row=0)
tk.Label(frame, text="密码").grid(row=1)

username_var = tk.StringVar()
pwd_var = tk.StringVar()
tk.Entry(frame, textvariable=username_var).grid(row=0, column=1)
tk.Entry(frame, show="*", textvariable=pwd_var).grid(row=1, column=1)

photo = tk.PhotoImage(file="./loading.gif")
tk.Label(frame, image=photo).grid(row=0, rowspan=2, column=2, padx=5, pady=5)


def login():
    username = username_var.get()
    password = pwd_var.get()
    print("username=%s, password=%s" % (username, password))


tk.Button(frame, text="登录", command=login, padx=20).grid(row=2, columnspan=3)

window.mainloop()

from tkinter import *

root = Tk()
Label(root, text="帐号").grid(row=0, sticky=W)
Label(root, text="密码").grid(row=1, sticky=W)
v = StringVar()
v.set("172.0.0.1")
e1 = Entry(root,textvariable = v)
e2 = Entry(root)
e1.grid(row=0, column=1, sticky=E)
e2.grid(row=1, column=1, sticky=E)
Button(root,text='登录').grid(row=3, column=1)
root.mainloop()

https://www.cnblogs.com/yang-2018/p/11791906.html

https://blog.csdn.net/nilvya/article/details/106148018

原文地址:https://www.cnblogs.com/emanlee/p/15340537.html