`

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

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

    #### 三、使用grid布局管理器 在本例中,我们将使用`grid`布局管理器来放置标签和按钮,并设置它们之间的间距。 ##### 示例代码解析 ```python import tkinter as tk root = tk.Tk() label = tk.Label(root, text...

    python tkinter控件布局项目实例

    python tkinter控件布局项目实例的详细知识点如下: 1. tkinter简介:python tkinter是一个用于创建图形用户界面(GUI)的库,它是python的标准GUI库,提供了丰富的控件来构建窗口、按钮、文本框等界面元素。...

    python Tk布局

    通过本文的学习,我们了解了Python Tkinter中三种常用的布局管理器:`pack()`、`grid()` 和 `place()` 的基本用法和特点。这些布局管理器各有优势,选择合适的布局管理器可以帮助开发者更高效地设计出美观、实用的...

    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

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

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

    Grayson -- Python and Tkinter Programming -- 2000.pdf

    - **布局管理器**:Tkinter提供了几种布局管理器,如pack、grid和place,它们可以帮助开发者轻松地管理窗口中的组件布局。 - **可扩展性**:除了标准组件之外,Tkinter还支持通过其他Python库或插件来扩展其功能。 ...

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

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

    python Tkinter Tk

    - **布局管理**:Tkinter提供了几种布局管理器,如`pack`、`grid`和`place`,帮助开发者更好地组织窗口内的各个组件。上述代码中使用了`pack`方法来定位各个组件。 - **变量初始化**:`init_vars()` 函数可能用于...

    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. **函数设计与模块化**:为了保持代码的...

    MOOC 《零基础学 Python 语言》LaTex 笔记,122页,Python 快速入门教程

    - **布局管理器**:理解 Grid、Pack 和 Place 等布局管理器的使用。 ### 总结 本课程从零开始教授 Python 编程的基础知识,覆盖了从基本概念到高级应用的各个方面。通过理论与实践相结合的方式,帮助学习者逐步...

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

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

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

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

Global site tag (gtag.js) - Google Analytics