Tkinter模块是Python的标准库模块之一,也是使用Python语言进行图形化用户界面(GUI)开发的基础。

本文介绍一下Tkinter模块的Grid几何管理器。

使用VB、MFC进行GUI开发是所见即所得的,即你可以把控件拖入界面中,随意放置、随意伸缩之后,界面变成什么样子,程序执行时生成的界面还是这个样子,非常方便。Python不一样,界面以及界面中的组件都需要你在源代码中生成,界面和组件的外观、大小都需要你使用代码进行设置。相比之下,使用Python进行GUI开发不是很方便,但这通常不是什么难事,Python语言的简洁性保证了GUI开发的高效和严格。

当界面中的组件多起来之后,我们就需要对这些组件进行布局。Tkinter模块有三种高级布局管理方法:其一是Place几何管理器,其二是Packer几何管理器,其三是Grid几何管理器。Tkinter模块的几何管理器是通过在父容器组件(通常是Frame或顶层窗口)内布局子组件来工作的。当我们要求一个组件将自己填充(pack)或网格化(grid)时,实际上是要求它的父组件将它布局在其他子组件中。通过pack,我们可以提供约束或边,让几何管理器恰如其分地布局好组件;通过grid,我们将组件放置在父容器的行和列中,仿佛父容器组件就是一张表格。另外要注意:pack和grid对于相同的父容器组件来说,它们是互斥的。即在给定的父容器中,我们要么用pack来布置组件,要么用grid来布置组件,但无法对同一个组件同时使用二者。

  • Packer几何管理器适合在父容器组件的垂直方向上进行布局,其参数较少,使用简单方便。
  • Grid几何管理器适合在父容器组件的水平、垂直方向上进行布局,适用于组件较多或需水平放置多个组件的情况。

Grid几何管理器的使用方法为:

widget.grid(**kw)

组件的布局效果取决于grid方法的关键字参数,来看一下这些关键字参数:

# 将组件放置在x行,y列的位置
widget.grid(row=x, column=y)

下面是一个示例:

 import tkinter
from tkinter.constants import * tk = tkinter.Tk() frame = tkinter.Frame(tk, relief=RIDGE, bg='blue', borderwidth=2)
frame.pack(fill=BOTH, expand=1) button1 = tkinter.Button(frame, text="button 1")
button1.grid(row=0, column=0) button2 = tkinter.Button(frame, text="button 2")
button2.grid(row=1, column=1) button3 = tkinter.Button(frame, text="button 3")
button3.grid(row=2, column=2) tk.mainloop()

其运行效果如下:

将剩下的参数全部列出:

# 设置单元格在垂直方向上跨越的行数
widget.grid(rowspan=n)
# 设置单元格在水平方向上跨越的列数
widget.grid(columnspan=n)
# 设置组件里面水平方向上空白区域的大小
widget.grid(ipadx=value)
# 设置组件里面垂直方向上空白区域的大小
widget.grid(ipady=value)
# 设置组件外面水平方向上空白区域的大小
widget.grid(padx=value)
# 设置组件外面垂直方向上空白区域的大小
widget.grid(pady=value)
# 组件在单元格中的默认对齐方式是居中,可使用sticky关键字进行修改
# 组件与单元格的顶端对齐
widget.grid(sticky=N)
# 组件与单元格的底端对齐
widget.grid(sticky=S)
# 组件与单元格的右端对齐
widget.grid(sticky=E)
# 组件与单元格的左端对齐
widget.grid(sticky=W)
# 拉伸组件的高度,使其与单元格的顶端和底端都对齐
widget.grid(sticky=N+S)
# 拉伸组件的宽度,使其与单元格的左端和右端都对齐
widget.grid(sticky=E+W)
# 拉伸组件的高度,使其与单元格的顶端和底端都对齐,并将组件放置在单元格的右端
widget.grid(sticky=N+S+E)
# 其他对齐方式

Tkinter模块:Grid几何管理器的更多相关文章

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

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

  2. 【python基础】 Tkinter 之 几何管理器

    Tkinter支持三种几何管理器:网格管理器,包管理器,位置管理器 提示:由于每个管理器都有自己放置小构件的风格,最好不要在同一个容器中的小构件使用多个管理器.可以使用框架作为子容器以获取期望的布局. ...

  3. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  4. Grid 布局管理器

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

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

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

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

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

  7. Tkinter 的三大布局管理器 pack、grid 和 place用法汇总

    学习python的tkinter免不了要对各个组件进行位置的排放与设定,常用的布局管理器有grid,pack和place.这三种均用于同一父组件下的组件布局,但是也是有区别的,先看下他们各自的含义吧. ...

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

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

  9. python爬虫模块之URL管理器模块

    URL管理器模块 一般是用来维护爬取的url和未爬取的url已经新添加的url的,如果队列中已经存在了当前爬取的url了就不需要再重复爬取了,另外防止造成一个死循环.举个例子 我爬www.baidu. ...

随机推荐

  1. 使用C#创建Windows服务 并发布Windows 服务

    一.开发环境 操作系统:Windows 10 X64 开发环境:VS2015 编程语言:C# .NET版本:.NET Framework 4.0 目标平台:X86 二.创建Windows Servic ...

  2. 使用Keepalived配置主从热备实现Nginx高可用(HA)

    Keepalived 简要介绍 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务 ...

  3. Linux 之CentOS7-VSFTP搭建

    环境 1.俩台Linux 虚拟机 Ser 和 Cli 安装 [root@jm ~]# rpm -ivh /mnt/Packages/vsftpd-3.0.2-10.el7.x86_64.rpm   / ...

  4. 有效的括号(Java实现)

    题目: 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符 ...

  5. vue使用webapck的最基本最简单的开发环境配置

    这个配置生成出来的代码只能支持ES6的浏览器下正常显示. npm init -y npm install vue-loader vue-template-compiler vue-style-load ...

  6. python学习之读写csv文件(使用pandas)

    简介 逗号分隔值(Comma-Separated Values,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本).纯文本意味着该文件是一个字符序 ...

  7. js统一设置富文本中的图片宽度

    var txt = layedit.getContent(ieditor);//获取编辑器内的文本var regex = new RegExp('<img', 'gi');txt = txt.r ...

  8. list内含有元组或字典

    a=[(")] for k,v,i in a: print(k,v,i) 结果: 1 21 12 2 31 32 list里含元组,可以用这种遍历输出挨个元素 但list里含字典时,这样就只 ...

  9. time 与 datetime 模块的常用方法

    时间格式 一个名词: UTC(Coordinated Universal Time):格林威治天文时,世界标准时间.中国为东八区 UTC+8 在编程的世界中,一定要了解的几种时间格式: 1.时间戳 从 ...

  10. background-size cover和contain的用法详解

    我们还可以通过background-size来控制背景图片的尺寸. background-size有几个属性值,常用的是cover和contain.那么background-size:cover和co ...