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