`

转: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项目案例源代码:Python制作简易时钟.zip

    Tkinter提供了几种布局管理器,如Grid、Pack和Place。选择合适的布局管理器可以使界面元素排列得整齐有序。在这个项目中,我们可能使用Grid或Pack来放置时钟组件。 9. **程序结构**: 一个良好的Python程序通常...

    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等项目的源码。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】...

    TK.rar_python grid_tk

    首先,`TK.rar_python grid_tk`标题暗示我们将使用Python的Tkinter库来构建GUI(图形用户界面),特别是利用其`grid`布局管理器来组织界面元素。Tkinter是Python的标准GUI库,提供了一系列组件,如按钮、文本框、...

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

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

    【源码】数据可视化:基于 Echarts + Python 实现的动态实时大屏范例12-供应商大屏.zip

    Echarts提供了布局工具,如grid、tooltip、legend等,用于控制图表的布局和交互。 5. **交互功能**:Echarts提供了丰富的交互功能,如缩放、平移、鼠标悬浮显示详情等,用户可以自定义这些功能以适应大屏需求。 6....

    图形用户界面和游戏开发_python教程_pythontkinter_python游戏_

    2. **布局管理**:Tkinter有三种布局管理器——`Grid`、`Pack`和`Place`,它们帮助调整组件在窗口中的位置和大小。 3. **事件处理**:通过绑定函数到组件的事件,如点击按钮,实现用户交互。例如,`button.config...

    pythonph_landing:python.ph 的旧登陆页面

    2. Grid布局:另一种可能的布局技术是CSS Grid,它可以更精确地控制二维网格布局,使得内容能够按照预设的行和列排列。 3. 颜色和字体:CSS允许开发者定义颜色方案,比如使用Python社区的主色调,以及选择合适的...

    pythonGUI与数据库开发教程

    包括各种控件如按钮、文本框、标签等,以及布局管理器如Grid和Pack。 2. **wxPython和PyQt**:这两个是更高级的GUI库,提供了更多功能和更好的视觉效果。wxPython基于wxWidgets,而PyQt基于Qt,两者都提供了丰富的...

    tkinter:Python命令行指南tkinter

    Tkinter提供三种布局管理器:网格(Grid)、堆栈(Pack)和放置(Place)。网格系统允许你按照行列对控件进行精确的定位;堆栈管理器按照前后顺序自动调整控件大小;放置管理器则允许你直接指定每个控件的绝对位置...

    Python简易界面跳转

    例如,可以创建两个`Frame`实例,分别代表两个页面,然后在适当的时候调用`grid_forget()`或`pack_forget()`方法隐藏当前帧,再调用`grid()`或`pack()`方法显示下一个帧。 6. **函数设计与模块化**:为了保持代码的...

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

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

    Python写简单的拼图小游戏完整项目

    - Tkinter中的Grid、Pack或Place布局管理器用于控制窗口中控件的位置和大小。在拼图游戏中,我们需要合理安排拼图块的布局。 6. **算法**: - **乱序算法**:用于打乱拼图块的顺序,可以使用Python内置的random...

    EnhancedPasswordManager:Python Tkinter密码管理器

    - 使用Grid或Pack布局管理器,可以有效地组织和调整这些组件在窗口中的位置。 3. **密码管理功能**: - 应用可能包括添加、编辑、删除和查看密码的功能。 - 用户应该能够通过主密码访问他们的账户信息,主密码的...

    绘图:Python MatPlotLib基础

    5. **网格线**:`grid()`函数用于开启或关闭网格线,可调整其样式和颜色。 **四、多图布局** Matplotlib支持在一个图形窗口中创建多个子图,通过`subplots()`函数实现: ```python fig, axs = plt.subplots(nrows=2...

    GUI:python gui项目

    在实现这样的项目时,首先需要设计UI布局,确定各个组件的位置和大小,以提供良好的用户体验。然后,编写事件处理函数,当用户与界面交互时,这些函数会被调用,执行相应的业务逻辑。例如,当用户点击“添加零件”...

    ArcGIS_Python开发,arcgis中python使用,Python

    4. 制图与布局:使用Python进行地图布局的设计,包括添加图件、文本、比例尺、指北针等元素,生成高质量的地图输出。 四、学习资源与进阶 1. Esri官方文档:提供了详尽的ArcPy API参考和教程,是学习ArcGIS Python...

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

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

    Python-Tkinter几何布局管理.pdf

    Python-Tkinter几何布局管理 Python-Tkinter几何布局管理是 Python 的 Tkinter 库中的一种几何布局管理机制,旨在帮助开发者快速而灵活地组织和管理 Tkinter 组件的布局。Tkinter 提供了三种几何管理类:pack、grid...

Global site tag (gtag.js) - Google Analytics