Python tkinter三种布局实例详解
本文详细解析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
以上就是本文的全部内容,希望对读者的学习和工作有所帮助,也欢迎大家继续支持本站获取更多技术资源。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













