Python Tkinter模块 Grid布局管理器参数详解

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

  grid使用方法和主要参数:

  1. row=x,column=y:将控件放在x行,y列的位置。注意:
  • 如果不指定参数,则默认从0开始。
  • 此处的行号和列号并不是像在坐标轴上一样严格,只是代表一个上下左右的关系,如在行号“1”没有出现的情况下:

  Label(master, text="First").grid(row=0)
  Label(master, text="Second").grid(row=1)

  Label(master, text="First").grid(row=0)
  Label(master, text="Second").grid(row=2)

效果都是一样的:

  2.columnspan: 设置单元格横向跨越的列数,即控件占据的列数(宽度); rowspan:设置单元格纵向跨越的行数,即控件占据的行数(高度)。

  3.ipadx:设置控件里面水平方向空白区域大小; ipady:设置控件里面垂直方向空白区域大小;

   padx:设置控件周围水平方向空白区域保留大小; pady:设置控件周围垂直方向空白区域保留大小;

  4.sticky:默认的控件在窗口中的对齐方式是居中。可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上对齐/下对齐/左对齐/右对齐,可以单独使用N/S/E/W,也可以上下和左右组合使用,达到不同的对齐效果,如:

  

from tkinter import *

master = Tk()
master.geometry(‘300x130‘)
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()

窗口内有两个按钮,宽度高度均不相同,可以看到它们的对齐方式是居中显示:

如果想让它们在同一行上下对齐,可以设置sticky=N+S,意为顶端和低端都要对齐:

  

from tkinter import *

master = Tk()
master.geometry(‘300x130‘)
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,sticky=N+S)
e2.grid(row=0, column=1,sticky=N+S)

mainloop()

  总结如下:

  sticky=N/S/E//W:顶端对齐/底端对齐/右对齐/左对齐

  sticky=N+S:拉伸高度,使其在水平方向上顶端和底端都对齐

  sticky=E+W,拉伸宽度,使其在垂直方向上左边界和右边界都对齐

  sticky=N+S+E:拉伸高度,使其在水平方向上对齐,并将控件放在右边(当两个控件放在同一行同一列时效果明显)

  .......

  还有诸如此类的组合方式根据需要调整。

  在Tkinter模块中,各种控件的大小计量单位并不尽相同,可能需要反复调整才能达到最佳效果。

  注:以上程序代码适用于python3.4.3版本,python2.x可能需要稍作改变。

  

        

时间: 2024-10-11 18:58:57

Python Tkinter模块 Grid布局管理器参数详解的相关文章

GridBagLayout布局管理器应用详解

http://yyzjava.iteye.com/blog/1181552 很多情况下,我们已经不需要通过编写代码来实现一个应用程序的图形界面,而是通过强大的IDE工具通过拖拽辅以简单的事件处理代码即可很轻松的完成.但是我们不得不面对这样操作存在的一些问题,有时候我们希望能够自由改变一个程序界面的大小,通过托拽生成的界面往往是不提供这个功能的,因为定制的界面一旦改变形状,组件间的布局会变得杂乱无章. Java中的布局管理器应用了策略者模式(Strategy),为不同类型的组件布局提供了很好的模型

Qt布局管理器(详解)

1.存在的问题 (1)目前的GUI开发方式:绝对定位 --直接在像素级指定各个组件的位置和大小 void QWidget::move(int x, int y) void QWidget::resize(int w, int h) (2)问题 --组件位置和大小无法自适应父窗口的变化 2.布局管理器 (1)解决方案:布局管理器 --提供相关的类对界面组件进行布局管理 @1:能够自动排列窗口中的界面组件 @2:窗口变化后自动更新界面组件的大小 (2)QLayout是Qt中布局管理器的抽象基类 (3

Grid 布局管理器

Grid 布局管理器: Grid布局类wx.GridSizer,Grid布局以网格形式对子窗口或控件进行摆放,容器被分成大小相等的矩形,一个矩形中放置一个子窗口或控件. wx.GridSizer构造方法如下: wx.GridSizer(rows,cols,vgap,hgap). 创建制定函数和列数的wx.GridSizer对象,并制定水平和垂直间隙,参数hgap是水平间隙.添加的子窗口或控件个数不得超过rows*cols之积,否则容易引发异常 wx.GridSizer(rows,cols,gap

Android开发之AudioManager(音频管理器)详解

AudioManager简介: AudioManager类提供了访问音量和振铃器mode控制.使用Context.getSystemService(Context.AUDIO_SERVICE)来得到这个类的一个实例. 公有方法: Public Methods int abandonAudioFocus(AudioManager.OnAudioFocusChangeListenerl) 放弃音频的焦点. void adjustStreamVolume(int streamType, int dir

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

本文转自: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,t

python爬虫模块之URL管理器

URL管理器模块 一般是用来维护爬取的url和未爬取的url已经新添加的url的,如果队列中已经存在了当前爬取的url了就不需要再重复爬取了,另外防止造成一个死循环.举个例子 我爬www.baidu.com 其中我抓取的列表中有music.baidu.om,然后我再继续抓取该页面的所有链接,但是其中含有www.baidu.com,可以想象如果不做处理的话就成了一个死循环了,在百度首页和百度音乐页循环,所以有一个对列来维护URL是很重要的. 下面以python代码实现为例,使用的deque双向队列

PHPFastCGI进程管理器PHP-FPM详解

PHP-FPM是一个PHPFastCGI进程管理器,是只用于PHP的.      PHP-FPM其实是PHP源代码的一个补丁,旨在将FastCGI进程管理整合进PHP包中.必须将它patch到你的PHP源代码中,在编译安装PHP后才可以使用.      现在我们可以在最新的PHP 5.3.2的源码树里下载得到直接整合了PHP-FPM的分支,据说下个版本会融合进PHP的主分支去.相对Spawn-FCGI,PHP-FPM在CPU和内存方面的控制都更胜一筹,而且前者很容易崩溃,必须用crontab进行

rpm包管理器用法详解

1,简介 rpm(Red Hat Pakage Manager),现在更名为RPM Package Manager,是一款业界公认的标准包管理器.所谓包管理器,就是把编译好的应用软件的各组成部分组成一个或几个程序包文件,从而实现程序包的安装,升级,卸载和查询等相关操作.广泛应用与redhat,centos,opensuse等发行版本上.当然,Dibian系列用的包管理器是dpkg. 2.rpm的组成 二进制程序,配置文件,帮助手册,以及如何组织,安装等其他元数据信息,不过,rpm都能理解. 3,

系统批量运维管理器Fabric详解

1.fab常用的参数 fab作为Fabric程序的命令行入口,提供了丰富的参数调用,命令格式如下: fab [options] <command>[:arg1,arg2=val2,host=foo,hosts='h1;h2',...]... -l,显示定义好的任务函数名: -f,指定fab入口文件,默认入口文件名为fabfile.py: -g,指定网关(中转)设备,比如堡垒机环境,填写堡垒机IP即可: -H,指定目标主机,多台主机用","号分隔: -P,以异步并行方式运行多