Grid(网格)布局管理器会将控件放置到一个二维的表格里。主控件被分割成一系列的行和列,表格中的每个单元(cell)都可以放置一个控件。

注意:不要试图在一个主窗口中混合使用pack和grid

(1)标签控件

 from tkinter import *

 tk=Tk()
#标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0)
Label(tk,text="Second").grid(row=1)#第二行 #主事件循环
mainloop()

(2) 输入控件

 from tkinter import *

 tk=Tk()
#标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0)
Label(tk,text="Second").grid(row=1)#第二行 #输入控件
Entry(tk).grid(row=0,column=1)
Entry(tk).grid(row=1,column=1) #主事件循环
mainloop()

(3)sticky参数的使用

 from tkinter import *

 tk=Tk()
#标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0,sticky=E)#靠右
Label(tk,text="Second").grid(row=2,sticky=W)#第二行,靠左 #输入控件
Entry(tk).grid(row=0,column=1)
Entry(tk).grid(row=2,column=1) #主事件循环
mainloop()

(4)columnspan和rowspan参数的使用

columnspan选项可以指定控件跨越多列显示,而rowspan选项同样可以指定控件跨越多行显示。

 from tkinter import *

 tk=Tk()
var=IntVar() #标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0,sticky=E)#靠右
Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左 #输入控件
Entry(tk).grid(row=0,column=1)
Entry(tk).grid(row=1,column=1) button=Checkbutton(tk,text="Precerve aspect",variable=var)
button.grid(sticky=W) #主事件循环
mainloop()

跨越两列显示如下

 from tkinter import *

 tk=Tk()
var=IntVar() #标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0,sticky=E)#靠右
Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左 #输入控件
Entry(tk).grid(row=0,column=1)
Entry(tk).grid(row=1,column=1) button=Checkbutton(tk,text="Precerve aspect",variable=var)
button.grid(columnspan=2,sticky=W) #主事件循环
mainloop()

 from tkinter import *

 tk=Tk()
var=IntVar() #标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0,sticky=E)#靠右
Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左 #输入控件
Entry(tk).grid(row=0,column=1)
Entry(tk).grid(row=1,column=1) #多选框插件
button=Checkbutton(tk,text="Precerve aspect",variable=var)
button.grid(row=2,columnspan=2,sticky=W) #插入图片
photo=PhotoImage(file="python_logo.gif")
label=Label(image=photo)
label.image=photo
label.grid(row=0,column=2) #主事件循环
mainloop()

 from tkinter import *

 tk=Tk()
var=IntVar() #标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0,sticky=E)#靠右
Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左 #输入控件
Entry(tk).grid(row=0,column=1,padx=10,pady=10)
Entry(tk).grid(row=1,column=1) #多选框插件
button=Checkbutton(tk,text="Precerve aspect",variable=var)
button.grid(row=2,columnspan=2,sticky=W) #插入图片
photo=PhotoImage(file="python_logo.gif")
label=Label(image=photo)
label.image=photo
label.grid(row=0,column=2,rowspan=2,columnspan=2,
sticky=W+E+N+S, padx=5, pady=5)#合并两行,两列,居中,四周外延5个长度 #主事件循环
mainloop()

(5)

 from tkinter import *

 tk=Tk()
var=IntVar() #标签控件,显示文本和位图,展示在第一行
Label(tk,text="First").grid(row=0,sticky=E)#靠右
Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左 #输入控件
Entry(tk).grid(row=0,column=1,padx=10,pady=10)
Entry(tk).grid(row=1,column=1) #多选框插件
button=Checkbutton(tk,text="Precerve aspect",variable=var)
button.grid(row=2,columnspan=2,sticky=W) #插入图片
photo=PhotoImage(file="python_logo.gif")
label=Label(image=photo)
label.grid(row=0,column=2,rowspan=2,columnspan=2,
sticky=W+E+N+S, padx=5, pady=5)#合并两行,两列,居中,四周外延5个长度 #按钮控件
button1=Button(tk,text="Zoom in")
button1.grid(row=2,column=2)
button2=Button(tk,text="Zoom out")
button2.grid(row=2,column=3) #主事件循环
mainloop()

(6)padx和pady参数的应用

 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)
frmRT = Frame(width=200, height=500) 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)

 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)
frmRT = Frame(width=200, height=500) frmLT.grid(row=0, column=0,padx=1,pady=3)
frmLC.grid(row=1, column=0,padx=1,pady=3)
frmLB.grid(row=2, column=0)
frmRT.grid(row=0, column=1, rowspan=3,padx=2,pady=3)

利用padx和pady,可以将框架边界区分开

 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)
frmRT = Frame(width=200, height=500) frmLT.grid(row=0, column=0,padx=1,pady=3)
frmLC.grid(row=1, column=0,padx=1,pady=3)
frmLB.grid(row=2, column=0)
frmRT.grid(row=0, column=1, rowspan=3,padx=2,pady=3) '''#固定容器大小
frmLT.grid_propagate(0)
frmLC.grid_propagate(0)
frmLB.grid_propagate(0)
frmRT.grid_propagate(0)''' #添加按钮
btnSend = Button(frmLB, text='发 送', width = 8)#在frmLB容器中添加
btnSend.grid(row=2,column=0)
btnCancel = Button(frmLB, text='取消', width = 8)
btnCancel.grid(row=2,column=1,sticky=E) #添加图片
imgInfo = PhotoImage(file = "python_logo.gif")
lblImage = Label(frmRT, image = imgInfo)
lblImage.image = imgInfo
lblImage.grid() #固定容器大小
frmLT.grid_propagate(0)
frmLC.grid_propagate(0)
frmLB.grid_propagate(0)
frmRT.grid_propagate(0)

Python Tkinter Grid布局管理器详解的更多相关文章

  1. Python基础=== Tkinter Grid布局管理器详解

    本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html          @ 箬笠蓑衣 Grid(网格)布局管理器会将控件放置到一个二维的表 ...

  2. tkinter之grid布局管理器详解

    在很久之前,我发过一篇<tkinter模块常用参数>,里面已经几乎涵盖了tkinter的大部分教程. 好吧,其实也就是上一篇而已啦. 所谓布局,就是指控制窗体容器中各个控件(组件)的位置关 ...

  3. Grid 布局管理器

    Grid 布局管理器: Grid布局类wx.GridSizer,Grid布局以网格形式对子窗口或控件进行摆放,容器被分成大小相等的矩形,一个矩形中放置一个子窗口或控件. wx.GridSizer构造方 ...

  4. tkinter学习-布局管理器

    阅读目录 pack 是按照添加顺序排列的组件 grid  是按照行/列形式排序的组件 place 允许程序员指定组件的大小和位置 pack: 说明:适用于少量的简单的组件的排列 fill:这个选项是告 ...

  5. Python Tkinter模块 Grid(grid)布局管理器参数详解

    在使用Tkinter模块编写图像界面时,经常用到pack()和grid()进行布局管理,pack()参数较少,使用方便,是最简单的布局,但是当控件数量较多时,可能需要使用grid()进行布局(不要在同 ...

  6. spring的annotation-driven配置事务管理器详解

    http://blog.sina.com.cn/s/blog_8f61307b0100ynfb.html ——————————————————————————————————————————————— ...

  7. HTTP属性管理器详解

      1)HTTP Cache Manager 2)HTTP Cookie 管理器 3)HTTP 信息头管理器 4)HTTP 授权管理器 5)HTTP 请求默认值 为什么会有这些http属性的配置元件? ...

  8. Python编程之子进程管理(subprocess)详解

    引言 在写程序时,我们无法避免需要运行外部程序,相较于功能比较简单的os.system(),更加倾向于使用subprocess模块来执行外部程序. 模块介绍 subprocess.run() 使用su ...

  9. Python中的各种装饰器详解

    Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...

随机推荐

  1. CSS盒子模型以及外边框合并的问题

    盒子模型 我们把布局里面的所有东西都可以想象成一个盒子,盒子里面又装着小盒子,小盒子里面又装着小小盒子......所以布局的万物基于盒子.即使一个小小的元素p,也可以把它抽象成为一个盒子.你现在心里有 ...

  2. javascript中的中介者模式——迪米特法则

    ”迪米特法则“——最少知识原则,不和陌生人说话,就是说,一个对象应当对其他对象有尽可能少的了解.talk only to your immediate friends.初衷是:降低对象之间的耦合度. ...

  3. css3 HSLA 颜色制造半透明效果

    简介 HSL色彩模式是工业界的一种颜色标准,是通过对色调(H).饱和度(S).亮度(L)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,HSL即是代表色调,饱和度,亮度三个通道的颜色, ...

  4. Oracle数据库使用sysdba登陆时出现ORA-01031: insufficient privileges问题

    今天在自己本本上装上了oracle数据库,然而在命令框登录时 用 sqlplus / as sysdba   时却出现了: insufficient privileges问题 原因就是没有加入ora_ ...

  5. 三、create-react-app新旧版中使用less和antd并修改主题颜色

    引入less 如果项目根目录中没有config文件夹,首先暴露出项目配置文件,项目下执行: npm run eject 如果项目是从git仓库中pull下来的的话,必须确保本地项目与仓库中没有冲突,才 ...

  6. Google Sign In

    我们平常也经常使用QQ,微信账号,登录其他应用.最近公司让我给网站添加一个谷歌账号登录.我来这里记录一下,莫怪~~~莫怪~~~ 1. 申请一个账号登录ID:  https://developers.g ...

  7. pycharm+keras+yolo3的使用和自选模型的训练中遇到的坑

    1.TensorFlow版本的问题 报错:RuntimeError: `get_session` is not available when using TensorFlow 2.0. 解决办法:这个 ...

  8. 大数据软件安装之Azkaban(任务调度)

    一.安装部署 1.安装前准备 1)下载地址:http://azkaban.github.io/downloads.html 2)将Azkaban Web服务器.Azkaban执行服务器.Azkaban ...

  9. [BJDCTF 2nd]fake google

    [BJDCTF 2nd]fake google 进入页面: 试了几下发现输入xxx,一般会按的格式显示, P3's girlfirend is : xxxxx 然后猜测会不会执行代码,发现可以执行 & ...

  10. angualrjs 总结 随记(三)

    $sanitize和$sce服务的使用方法 $sanitize会把标签的属性都移除,以及绑定在元素上的事件.仅保留了标签和内容 $q服务的使用1. 创建一个Service,去服务器读取数据: 2. 在 ...