Python tkinter三种布局实例详解

Mason
Mason
发布时间:2026-10-13| 6人浏览过
原创

本文详细解析Python tkinter的三种核心布局方式:pack、grid和place。通过具体代码示例,展示pack的自动排列、grid的行列网格定位以及place的绝对与相对坐标控制,帮助开发者掌握GUI界面设计的最佳实践。

本文深入探讨了Python tkinter库中的三种主要布局管理器,并通过详细的代码示例进行说明。这些内容对于希望学习或应用tkinter进行界面开发的读者具有重要的参考价值。

pack布局详解

首先介绍pack布局的使用场景与基本方法。


#
pack布局案例
import tkinter
baseFrame = tkinter.Tk()
# 以下代码都是创建一个组件, 然后布局
btn1 = tkinter.Button(baseFrame, text =
	"A")
btn1.pack(side = tkinter.LEFT, expand =
	tkinter.YES, fill = tkinter.Y)
​
btn2 = tkinter.Button(baseFrame, text =
	"B")
btn2.pack(side = tkinter.TOP, expand =
	tkinter.YES, fill = tkinter.BOTH)
​
btn2 = tkinter.Button(baseFrame, text =
	"C")
btn2.pack(side = tkinter.RIGHT, expand =
	tkinter.YES, fill = tkinter.NONE)
​
btn2 = tkinter.Button(baseFrame, text =
	"D")
btn2.pack(side = tkinter.LEFT, expand =
	tkinter.NO, fill = tkinter.Y)
​
btn2 = tkinter.Button(baseFrame, text =
	"F")
btn2.pack(side = tkinter.BOTTOM, expand =
	tkinter.YES)
​
btn2 = tkinter.Button(baseFrame, text =
	"G")
btn2.pack(anchor = tkinter.SE)
​
baseFrame.mainloop()

grid布局应用

接着讲解grid布局的具体应用案例。

grid布局的通用调用方式为:先创建组件对象,随后调用grid()方法并传入相关参数进行配置。

在grid布局中,行(row)和列(column)的索引均从0开始计算。

sticky参数用于指定组件在网格单元格中的对齐方式,接受N(北/上)、E(东/右)、S(南/下)、W(西/左)等值,决定组件靠哪一侧对齐。

grid函数同样支持ipadx、padx等内边距和外边距参数,其作用机制与pack函数中的对应参数一致。

此外,grid支持rowspan和columnspan参数,用于控制组件跨越多行或多列的显示范围。


#
pack布局案例
import tkinter
# baseFrame = tkinter.Tk()
## 以下代码都是创建一个组件, 然后布局
# btn1 = tkinter.Button(baseFrame, text =
	"A")
# btn1.pack(side = tkinter.LEFT, expand =
	tkinter.YES, fill = tkinter.Y)
#
# btn2 = tkinter.Button(baseFrame, text =
	"B")
# btn2.pack(side = tkinter.TOP, expand =
	tkinter.YES, fill = tkinter.BOTH)
#
# btn2 = tkinter.Button(baseFrame, text =
	"C")
# btn2.pack(side = tkinter.RIGHT,
	expand = tkinter.YES, fill = tkinter.NONE
)
#
# btn2 = tkinter.Button(baseFrame, text =
	"D")
# btn2.pack(side = tkinter.LEFT, expand =
	tkinter.NO, fill = tkinter.Y)
#
# btn2 = tkinter.Button(baseFrame, text =
	"F")
# btn2.pack(side = tkinter.BOTTOM,
	expand = tkinter.YES)
#
# btn2 = tkinter.Button(baseFrame, text =
	"G")
# btn2.pack(anchor = tkinter.SE)
#
#
# baseFrame.mainloop()
​
baseFrame2 = tkinter.Tk()
​
lb1 = tkinter.Label(baseFrame2, text =
	"账号:")
lb1.grid(row = 0, sticky = tkinter.W)
tkinter.Entry(baseFrame2).grid(row = 0,
	column = 1, sticky = tkinter.E)
​
lb2 = tkinter.Label(baseFrame2, text =
	"密码:")
lb2.grid(row = 1, sticky = tkinter.W)
tkinter.Entry(baseFrame2).grid(row = 1,
	column = 1, sticky = tkinter.E)
​
button = tkinter.Button(baseFrame2,
	text = "登录").grid(row = 2, column = 1,
	sticky = tkinter.E)
baseFrame2.mainloop()

place布局解析

第三种布局方式为place布局,适用于需要精确控制位置的场景。

place布局允许用户通过明确的坐标参数来指定组件的摆放位置。

需要注意的是,若使用相对位置布局,当窗口大小发生随意改变时,可能导致界面元素排列混乱。

调用place函数时,可分为绝对布局和相对布局两种模式。绝对布局通过x和y参数指定组件在窗口中的具体像素坐标。

相对布局则使用relx、rely指定相对坐标,以及relheight和relwidth指定相对宽高,使组件随窗口缩放而调整。

源码示例

以下是实现上述三种布局的完整源代码文件。

源代码文件名为:D61_ThreeFrameOfTkinter.py

完整代码托管于GitHub:https://github.com/ruigege66/Python_learning/blob/master/D61_ThreeFrameOfTkinter.py

以上就是本文的全部内容,希望对读者的学习和工作有所帮助,也欢迎大家继续支持本站获取更多技术资源。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。