本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html          @ 箬笠蓑衣

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

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

(1)标签控件

1 from tkinter import *
2
3 tk=Tk()
4 #标签控件,显示文本和位图,展示在第一行
5 Label(tk,text="First").grid(row=0)
6 Label(tk,text="Second").grid(row=1)#第二行
7
8 #主事件循环
9 mainloop()

(2) 输入控件

 1 from tkinter import *
2
3 tk=Tk()
4 #标签控件,显示文本和位图,展示在第一行
5 Label(tk,text="First").grid(row=0)
6 Label(tk,text="Second").grid(row=1)#第二行
7
8 #输入控件
9 Entry(tk).grid(row=0,column=1)
10 Entry(tk).grid(row=1,column=1)
11
12 #主事件循环
13 mainloop()

(3)sticky参数的使用

 1 from tkinter import *
2
3 tk=Tk()
4 #标签控件,显示文本和位图,展示在第一行
5 Label(tk,text="First").grid(row=0,sticky=E)#靠右
6 Label(tk,text="Second").grid(row=2,sticky=W)#第二行,靠左
7
8 #输入控件
9 Entry(tk).grid(row=0,column=1)
10 Entry(tk).grid(row=2,column=1)
11
12 #主事件循环
13 mainloop()

(4)columnspan和rowspan参数的使用

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

 1 from tkinter import *
2
3 tk=Tk()
4 var=IntVar()
5
6 #标签控件,显示文本和位图,展示在第一行
7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
9
10 #输入控件
11 Entry(tk).grid(row=0,column=1)
12 Entry(tk).grid(row=1,column=1)
13
14 button=Checkbutton(tk,text="Precerve aspect",variable=var)
15 button.grid(sticky=W)
16
17 #主事件循环
18 mainloop()

跨越两列显示如下

 1 from tkinter import *
2
3 tk=Tk()
4 var=IntVar()
5
6 #标签控件,显示文本和位图,展示在第一行
7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
9
10 #输入控件
11 Entry(tk).grid(row=0,column=1)
12 Entry(tk).grid(row=1,column=1)
13
14 button=Checkbutton(tk,text="Precerve aspect",variable=var)
15 button.grid(columnspan=2,sticky=W)
16
17 #主事件循环
18 mainloop()

 1 from tkinter import *
2
3 tk=Tk()
4 var=IntVar()
5
6 #标签控件,显示文本和位图,展示在第一行
7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
9
10 #输入控件
11 Entry(tk).grid(row=0,column=1)
12 Entry(tk).grid(row=1,column=1)
13
14 #多选框插件
15 button=Checkbutton(tk,text="Precerve aspect",variable=var)
16 button.grid(row=2,columnspan=2,sticky=W)
17
18 #插入图片
19 photo=PhotoImage(file="python_logo.gif")
20 label=Label(image=photo)
21 label.image=photo
22 label.grid(row=0,column=2)
23
24 #主事件循环
25 mainloop()

 1 from tkinter import *
2
3 tk=Tk()
4 var=IntVar()
5
6 #标签控件,显示文本和位图,展示在第一行
7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
9
10 #输入控件
11 Entry(tk).grid(row=0,column=1,padx=10,pady=10)
12 Entry(tk).grid(row=1,column=1)
13
14 #多选框插件
15 button=Checkbutton(tk,text="Precerve aspect",variable=var)
16 button.grid(row=2,columnspan=2,sticky=W)
17
18 #插入图片
19 photo=PhotoImage(file="python_logo.gif")
20 label=Label(image=photo)
21 label.image=photo
22 label.grid(row=0,column=2,rowspan=2,columnspan=2,
23 sticky=W+E+N+S, padx=5, pady=5)#合并两行,两列,居中,四周外延5个长度
24
25 #主事件循环
26 mainloop()

(5)

 1 from tkinter import *
2
3 tk=Tk()
4 var=IntVar()
5
6 #标签控件,显示文本和位图,展示在第一行
7 Label(tk,text="First").grid(row=0,sticky=E)#靠右
8 Label(tk,text="Second").grid(row=1,sticky=W)#第二行,靠左
9
10 #输入控件
11 Entry(tk).grid(row=0,column=1,padx=10,pady=10)
12 Entry(tk).grid(row=1,column=1)
13
14 #多选框插件
15 button=Checkbutton(tk,text="Precerve aspect",variable=var)
16 button.grid(row=2,columnspan=2,sticky=W)
17
18 #插入图片
19 photo=PhotoImage(file="python_logo.gif")
20 label=Label(image=photo)
21 label.grid(row=0,column=2,rowspan=2,columnspan=2,
22 sticky=W+E+N+S, padx=5, pady=5)#合并两行,两列,居中,四周外延5个长度
23
24 #按钮控件
25 button1=Button(tk,text="Zoom in")
26 button1.grid(row=2,column=2)
27 button2=Button(tk,text="Zoom out")
28 button2.grid(row=2,column=3)
29
30
31 #主事件循环
32 mainloop()

(6)padx和pady参数的应用

 1 from tkinter import *
2 import time
3
4 t = Tk()
5 t.title('与python聊天中')
6
7 #创建frame容器
8 frmLT = Frame(width=500, height=320, bg='white')
9 frmLC = Frame(width=500, height=150, bg='red')
10 frmLB = Frame(width=500, height=30)
11 frmRT = Frame(width=200, height=500)
12
13 frmLT.grid(row=0, column=0)
14 frmLC.grid(row=1, column=0)
15 frmLB.grid(row=2, column=0)
16 frmRT.grid(row=0, column=1, rowspan=3)

 1 from tkinter import *
2 import time
3
4 t = Tk()
5 t.title('与python聊天中')
6
7 #创建frame容器
8 frmLT = Frame(width=500, height=320, bg='white')
9 frmLC = Frame(width=500, height=150, bg='red')
10 frmLB = Frame(width=500, height=30)
11 frmRT = Frame(width=200, height=500)
12
13 frmLT.grid(row=0, column=0,padx=1,pady=3)
14 frmLC.grid(row=1, column=0,padx=1,pady=3)
15 frmLB.grid(row=2, column=0)
16 frmRT.grid(row=0, column=1, rowspan=3,padx=2,pady=3)

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

 1 from tkinter import *
2 import time
3
4 t = Tk()
5 t.title('与python聊天中')
6
7 #创建frame容器
8 frmLT = Frame(width=500, height=320, bg='white')
9 frmLC = Frame(width=500, height=150, bg='red')
10 frmLB = Frame(width=500, height=30)
11 frmRT = Frame(width=200, height=500)
12
13 frmLT.grid(row=0, column=0,padx=1,pady=3)
14 frmLC.grid(row=1, column=0,padx=1,pady=3)
15 frmLB.grid(row=2, column=0)
16 frmRT.grid(row=0, column=1, rowspan=3,padx=2,pady=3)
17
18 '''#固定容器大小
19 frmLT.grid_propagate(0)
20 frmLC.grid_propagate(0)
21 frmLB.grid_propagate(0)
22 frmRT.grid_propagate(0)'''
23
24 #添加按钮
25 btnSend = Button(frmLB, text='发 送', width = 8)#在frmLB容器中添加
26 btnSend.grid(row=2,column=0)
27 btnCancel = Button(frmLB, text='取消', width = 8)
28 btnCancel.grid(row=2,column=1,sticky=E)
29
30 #添加图片
31 imgInfo = PhotoImage(file = "python_logo.gif")
32 lblImage = Label(frmRT, image = imgInfo)
33 lblImage.image = imgInfo
34 lblImage.grid()
35
36 #固定容器大小
37 frmLT.grid_propagate(0)
38 frmLC.grid_propagate(0)
39 frmLB.grid_propagate(0)
40 frmRT.grid_propagate(0)

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

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

    Grid(网格)布局管理器会将控件放置到一个二维的表格里.主控件被分割成一系列的行和列,表格中的每个单元(cell)都可以放置一个控件. 注意:不要试图在一个主窗口中混合使用pack和grid (1) ...

  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. python基础教程笔记—即时标记(详解)

    最近一直在学习python,语法部分差不多看完了,想写一写python基础教程后面的第一个项目.因为我在网上看到的别人的博客讲解都并不是特别详细,仅仅是贴一下代码,书上内容照搬一下,对于当时刚学习py ...

  8. HTTP属性管理器详解

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

  9. NLB网路负载均衡管理器详解

    序言 在上一篇配置iis负载均衡中我们使用啦微软的ARR,我在那篇文章也中提到了网站的高可用性,但是ARR只能做请求入口的消息分发服务,这样如果我们的消息分发服务器给down掉啦,那么做再多的应用服务 ...

随机推荐

  1. ueditor 定制工具栏图标

    在使用Ueditor时,如要简化工具栏上的按钮,可以修改配置项的方法: 1. 方法一:修改 ueditor.config.js 里面的 toolbars 2. 方法二:实例化编辑器的时候传入 tool ...

  2. Matlab 之 im2col 【转】

    函数原型: B=im2col(A,[m n],block_type) 功能:将矩阵A分为m×n的子矩阵,再将每个子矩阵作为B的一列 (1)当block_type为distinct时,将A分解为互不重叠 ...

  3. 51nod 1296 有限制的排列(DP)

    对于一个i,如果要比邻居大,那么i比i-1大,i+1比i小,比邻居小同理.设v[i]=0表示i与i-1的关系无限制,v[i]=1表示a[i-1]>a[i],v[i]=2表示a[i-1]<a ...

  4. NOIP2016Day1T2天天爱跑步(LCA+桶)

    据说是今年NOIP最难一题了...我还记得当时满怀期待心情点开Day1的题发现T2就不会了于是怀疑人生良久... 啊好像很多大爷都是用线段树合并写的,我怎么什么数据结构都不会啊呜呜呜... 题目大意就 ...

  5. Tomcat启动web项目报Bad version number in .class file (unable to load class ...)错误的解决方法

    一.发现问题:启动 tomcat 控制台报该错误.   二.原因:tomcat 的 jdk 版本和编译.class的 jdk 版本不一致.   三.解决办法:   步骤一: 查看 MyEclipse ...

  6. Mybatis批量更新详解

    转:http://www.cnblogs.com/winkey4986/p/3915151.html Mybatis批量更新 批量操作就不进行赘述了.减少服务器与数据库之间的交互.网上有很多关于批量插 ...

  7. NYOJ 740 DP

    “炫舞家“ST 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 ST是一个酷爱炫舞的玩家.TA很喜欢玩QQ炫舞,因此TA也爱屋及乌的喜欢玩跳舞机(Dance Danc ...

  8. 实体框架(Entity Framework)快速入门

    实体 框架 (Entity Framework )简介 实体框架Entity Framework 是 ADO .NET 中的一组支持 开发 面向数据的软件应用程序的技术.是微软的一个ORM框架. OR ...

  9. DBA操作常用命令

    一.ORACLE的启动和关闭   1.在单机环境下   要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下   su - oracle      a.启动ORACLE系统   orac ...

  10. 【C++对象模型】第一章 关于对象

    1.C/C++区别 C++较之C的最大区别,无疑在于面向对象,C程序中程序性地使用全局数据.而C++采用ADT(abstract data tpye)或class hierarchy的数据封装.类相较 ...