`

转:python grid布局

阅读更多

 

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

什么时候使用Grid管理器

 

grid管理器是Tkinter里面最灵活的几何管理布局器。如果你不确定什么情况下从三种布局管理中选择,你至少要保证自己会使用grid。
当你设计对话框的时候,grid布局管理器是一个非常方便的工具。如果你之前使用pack进行布局的话,你会被使用grid后的简洁而震惊。与适应很多frame来让pack工作不同,在大多数情况下,你只需要将所有控件放置到容器中,然后使用grid将它们布局到任何你想要布局的地方。

参考下面这个例子:


使用pack进行布局的话,你不得不使用一些额外的frame控件,而且还需要花费一些功夫让他们变得好看。如果你使用grid的话,你只需要对每个控件使用grid,所有的东西都会以合适的方式显示。

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


使用grid进行布局管理非常容易。只需要创建控件,然后使用grid方法去告诉布局管理器在合适的行和列去显示它们。你不用事先指定每个网格的大小,布局管理器会自动根据里面的控件进行调节。

from Tkinter import *

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


e1 = Entry(master)
e2 = Entry(master)


e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

mainloop()

运行如下图所示:

label1占据0行0列,label2占据1行0列,entry1占据0行1列,entry2占据1行1列。

注意:1.在使用grid方法时,如果不指定column参数,则默认从0开始。

2.没有被使用的行和列号将被忽略,在上面的例子中如果使用10行和20行,则运行效果是一样的。

 

使用sticky参数

默认的空间会在网格中居中显示。你可以使用sticky选项去指定对齐方式,可以选择的值有:N/S/E/W,分别代表上/下/左/右。如果你想让label靠左显示,你可以设置stricky的值为W。

from Tkinter import *

master = Tk()
Label(master, text="First").grid(row=0, sticky=W)
Label(master, text="Second").grid(row=1, sticky=w)


e1 = Entry(master)
e2 = Entry(master)


e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

mainloop()

运行效果如下图:

你同样可以指定控件跨越一个或者多个网格。columnspan选项可以指定控件跨越多列显示,而rowspan选项同样可以指定控件跨越多行显示。

下面的代码创建了我们最初演示的示意图:

from Tkinter import *

master = Tk()
var = IntVar()

Label(master, text="First").grid(sticky=E)
Label(master, text="Second").grid(sticky=E)

e1 = Entry(master)
e2 = Entry(master)

e1.grid(row=0, column=1)
e2.grid(row=1, column=1)

checkbutton = Checkbutton(master, text='Preserve aspect', variable=var)
checkbutton.grid(columnspan=2, sticky=W)

photo = PhotoImage(file='2qq.gif')
label = Label(image=photo)
label.image = photo
label.grid(row=0, column=2, columnspan=2, rowspan=2, sticky=W+E+N+S, padx=5, pady=5)

button1 = Button(master, text='Zoom in')
button1.grid(row=2, column=2)

button2 = Button(master, text='Zoom out')
button2.grid(row=2, column=3)

mainloop()

运行效果如下图:

在这段代码中,有一些细节需要注意:

1. 我们没有为左边的两个label控件指定具体的位置,在这种情况下,column将会从0开始,而row将会从第一个没有使用的值开始。

2. 我们队checkbutton设置了columnspan参数,所以它会显示在第二行,并占据第0和1列。

3. 图像label占用了2行2列,而最后的两个button都只占用了1列。

分享到:
评论

相关推荐

    Python Grid使用和布局详解

    本文实例为大家分享了Python Grid使用和布局的具体代码,供大家参考,具体内容如下 #!/usr/bin/env python import vtk # 这个示例主要用于将不同的图像对象显示到指定的Grid中 def main(): colors = vtk....

    格子表单:基于 GRID 布局的简单表单工具(包含可视化设计器、渲染器),默认组件库为 Naive UI,同时支持 .zip

    包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...

    Python GUI编程 164_Grid布局管理器详解.mp4

    Python GUI编程 164_Grid布局管理器详解.mp4

    零基础Python教程048期 GUI模拟用户登录,grid布局很方便!编程创造城市

    零基础Python教程048期_GUI模拟用户登录,grid布局很方便!#编程创造城市

    Python tkinter的grid布局及Text动态显示方法

    我在这里主要说一下tkinter中3种布局方式中的grid布局,在之前写个比较简单的软件的时候遇到了写问题,在此记录下来。 1. grid中的一些参数:需要声明的是,行列大小由该列/行中最大组件大小所决定!! column: ...

    Python tkinter布局与按钮间距设置方式

    新建label与button,并设置位置(grid) import tkinter as tk root = tk.Tk() label = tk.Label(root, text = ‘Label') label.grid(column = 3, row = 8) button = tk.Button(root, text = ‘Button') button....

    sqlalchemy-and-ag-grid

    我们将使用python生成一些数独布局,这些布局将被加载到sqlite数据库中。 我们还将生成关联的蒙版,以在各种完成状态下渲染拼图的变化。 最后,我们将使用ag-grid将其呈现在仪表板上。 dashobard将允许不同代理处理...

    Python GUI编程学习笔记之tkinter界面布局显示详解

    本文实例讲述了Python GUI编程学习笔记之tkinter界面布局显示。分享给大家供大家参考,具体如下: 相关内容: pack 介绍 常用参数 使用情况 常用函数 grid 介绍 常用参数 使用情况 常用函数 place ...

    python教程之Tkinter桌面编程

    Tkinter了解、tkinter扩展、tkinter架构分析、外观配置、widget style组件外观属性、事件events and bindings、basewindow-toplevel、菜单选择、工具栏toolbar、信息messagebox、状态栏statusbar、扩展学习、grid布局

    grid:GoGi SVG矢量绘图程序

    Grid是基于GoGi的SVG矢量... 导出PNG和PDF取决于 (取决于python),请按照以下步骤安装: $ pip3 install cairosvg 设计 总体布局类似于inkscape,并读取/写入与inkscape兼容的SVG文件。 顶部的主要水平工具栏-顶部

    06_Python GUI篇1-tkinter-更新20210121.pdf

    Python GUI tkinter各个基础控件Label、Button、Entry、Text、ListBox的属性和方法进行了更加详细的说明,同时补充了tkinter中控...对tkinter框架frame以及布局pack、grid、place也做了比较详细的属性方法说明与示例。

    小的程序, AES 128 CBC 加密文件解密文件, 图形界面python tkinter

    没有注释, 不过应该还是不难看懂的, tkinter主要用的grid布局 作用就跟aes在线工具差不多, 不同的是ase 加密位数, 初始向量IV, 模式, 编码, 填充 图形界面都没有修改的选项 额外的是多了个自动按时间保存加密后的...

    i3-grid:i3wm网格控制器,用于加速浮动窗口管理

    i3,我们心爱的窗口管理器,着重于平铺和选项卡式布局。 i3允许用户自己处理浮动组件,同时提供许多工具(刮擦垫,标记等)。 发现浮动窗口的管理乏善可陈,我决定写一个子经理来处理浮动窗口。 缺乏标准工具已导致...

    ImageGallery2.rar

    用作Python图片浏览器演示。在原ImageGallery.rar的基础上,增加简单的组件自适应性,在窗口...将Tkinter的grid布局修改为pack布局。线程管理selenium和geckodriver的启动和使用,引入GC机制销毁geckodriver和firefox。

    AC-学号-姓名- 题号28731

    温州大学计算机与人工智能学院 《Python应用开发》课程作业 实验名称Grid布局 班 级 姓 名 学 号实验地点5B-105实验时间第7周、第8周指

    【JavaScript源代码】如何在CocosCreator中做一个List.docx

     自写一个虚拟列表,有垂直布局,水平布局,网格布局和Padding的List Demo地址:https://files-cdn.cnblogs.com/files/gamedaybyday/cocos2.3.4_ListViewDemo_Grid.7z  cocos原来的LayOut做列表,有100个数据就有...

    fedbook:前端修炼小册(Wenyuan's frontend developer book. Including HTML, CSS, JavaScript, etc.)

    前端修炼小册 简介 | 以「前端开发」为主线,涵盖但不仅限于前端技术栈的知识点。 记录每一天的进步,越努力,越幸运,欢迎收藏或 star。 与的区别: 博客记录日常开发经验,读书...Grid 布局 未完结,待更新 JavaScr

    dev-pills:跟踪日常学习

    分类目录 打字稿Node.js JavaScript框架和库ReactRedux Vue 盖茨比Next.js Nest.js 拉姆达Python Ruby滑轨C# 长生不老药前端CSS CSS基础flexbox , grid和其他布局错误的提示和技巧CSS资源Postgres 去锈Web组装移动...

Global site tag (gtag.js) - Google Analytics